我可以将小写字母替换为下一个字母。特殊字符和大写字母不应更改,但我不知道如何更改。
/** Return s but with each occurrence of a letter in 'a'..'y'
* replaced by the next letter and 'z' replaced by 'a'
*
* Examples: nextChar("") = ""
* nextChar("abcz") = "bcda"
* nextChar("1a$b") = "1b$c"
* nextChar("AB") = "AB"
* nextChar("love") = "mpwf" */
public static String nextLetter(String s) {
// TODO 3
String next = "";
for (char x: s.toCharArray()) {
next += Character.toString((char)(((x - 'a' + 1) % 26) + 'a'));
}
return next;
}
答案 0 :(得分:1)
只需使用if语句检查字符是否为小写字母,然后将其提升为下一个字母。 Character
类型已经有一个Character.isLowerCase()
,用于检查字符是否为小写字母。
您还可以像if ('a' <= character && character <= 'z')
那样进行范围检查,以检查字母是否为小写。
当确定字母为小写字母时,将其提升为下一个字母(还请检查字符是否通过'z',然后将其回滚到'a')并将其附加到结果中。如果不是小写字母,只需将其附加到结果中即可。
public class MyClass {
public static void main(String args[]) {
System.out.println(nextLetter("abcz1a$bABlove"));
}
private static String nextLetter(String data) {
String result = "";
for (int i = 0; i < data.length(); i++) {
char character = data.charAt(i);
if (Character.isLowerCase(character)) {
character++;
// Account for rollover on 'z'
if (character == '{') {
character = 'a';
}
}
result += character;
}
return result;
}
}
结果
bcda1b$cABmpwf
答案 1 :(得分:0)
您可以使用if条件来检查字母是否为小写。 另外,我使用Java 8 lambda函数来迭代字符串中的字符。
public static String nextLetter(String s) {
StringBuilder sb = new StringBuilder();
s.chars().forEach(c -> {
if (Character.isLowerCase(c)) {
sb.append((char) (((c - 'a' + 1) % 26) + 'a'));
} else {
sb.append((char)c);
}
});
return sb.toString();
}