用字符串中的随机字符替换字母和数字

时间:2016-09-26 15:43:13

标签: java string

我想匿名一个字符串(来自用户的任意输入),但仍保留其结构。因此,我想用随机小写字母替换小写字母,用随机数字替换大小写字母,用随机大写字母替换大写字母。

我已经提出了这个功能,但我想知道这是否是最快/最好的方式?

public String anonymiseString(String originalInput){
    StringBuilder input = new StringBuilder(originalInput);
    Random r = new Random();
    char currentChar;
    for(int i = 0; i < input.length(); i++) {
        currentChar = input.charAt(i);
        if(Character.isUpperCase(currentChar))
            input.setCharAt(i, (char) (r.nextInt(26) + 'A'));
        else if (Character.isLowerCase(currentChar))
            input.setCharAt(i, (char) (r.nextInt(26) + 'a'));
        else if (Character.isDigit(currentChar))
            input.setCharAt(i, (char) (r.nextInt(10) + '0'));
    }

    return input.toString();
}

可以在此处运行示例:https://ideone.com/VNebO0

1 个答案:

答案 0 :(得分:-1)

基本上你的解决方案很好但是有一些方法可以使代码更加干净:

  • 将新的字符代数移到3个不同的方法中(例如char createNewUpperCase()char createNewDigit()char createNewLetter()
  • 也将所有if逻辑提取到单独的方法中(例如char createNewChar(char currentChar)

通过这种方式,您的代码将从Single Responsibility Principle方面更好。