我可以将小写字母替换为下一个字母。特殊字符和大写字母不应该改变,但我不知道如何改变。
/** 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;
}
只需使用 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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句