更改字符串JAVA中的字符值

时间:2014-01-27 02:26:17

标签: java

我正在写一个“编码”你的字符串的android程序。如果输入“abz”,它应输出“bca”,基本上该字符串中的每个字符都将更改为下一个字符。我在JavaScript中实现了这个

 var alphabet = "abcdefghijklmnopqrstuvwxyza",
 var newstr = '';

for (var i = 0; i < str.length; i++) {
    if (alphabet.indexOf(str[i]) != -1) {
        newstr += alphabet[alphabet.indexOf(str[i]) + 1];
    } else {
        newstr += str[i];
    }  
}

我将如何在JAVA中执行此操作

3 个答案:

答案 0 :(得分:2)

一些小修改:

String alphabet = "abcdefghijklmnopqrstuvwxyza";
String newstr = "";

for (int i = 0; i < str.length(); i++) {
    if (alphabet.indexOf(str.charAt(i)) != -1) {
        newstr += alphabet.charAt(alphabet.indexOf(str.charAt(i)) + 1);
    } else {
        newstr += str.charAt(i);
    }
}

Java没有像JavaScript这样的var关键字,因此您必须明确键入变量。另一个不同的是String使用string.charAt(pos)而不是string[pos]编制索引。

请注意,String在Java中是不可变的,因此每次附加到String时,实际上都会创建一个新的,这会导致相当大的性能问题。 StringBufferStringBuilder更适合此。

现场演示:http://ideone.com/ZrZL0L

答案 1 :(得分:2)

我建议使用StringBuilder类。

StringBuilder sb = new StringBuilder();
sb.append(somechar);
sb.append(somechar);
sb.append(somechar);
像这样。正如pcnThird所指出的,String类是不可变的。 StringBuilder不是,所以它很适合。

完成后,请按sb.toString();获取字符串。

答案 2 :(得分:0)

我不确定为什么人们建议使用charAt,但我认为你应该自己迭代这些角色

String s = /* words */;
char[] sentence = s.toCharArray();
for (int i = 0; i < sentence.length; i++) {
    if (Character.toLowerCase(char[i]) == 'z') {
        if (Character.isUpperCase(char[i])) {
            char[i] = 'A';
        } else {
            char[i] = 'a';
        }
    } else {
        char[i]++;
    }
}
String encoded = new String(sentence);

这只会创建一个额外的字符串实例(不需要stringbuilder),并且相对简单。