作为标准 Java 库之一的一部分,是否已经有一个rot13()
和实现?unrot13()
还是我必须自己写并“重新发明轮子”?
它可能看起来像这样:
int rot13 ( int c ) {
if ( (c >= 'A') && (c <= 'Z') )
c=(((c-'A')+13)%26)+'A';
if ( (c >= 'a') && (c <= 'z') )
c=(((c-'a')+13)%26)+'a';
return c;
}
不妨贡献我的功能来为其他开发人员节省宝贵的时间
public static String rot13(String input) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
if (c >= 'a' && c <= 'm') c += 13;
else if (c >= 'A' && c <= 'M') c += 13;
else if (c >= 'n' && c <= 'z') c -= 13;
else if (c >= 'N' && c <= 'Z') c -= 13;
sb.append(c);
}
return sb.toString();
}
我不认为默认情况下它是 Java 的一部分,但这里有一个如何实现它的示例;
public class Rot13 {
public static void main(String[] args) {
String s = args[0];
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c >= 'a' && c <= 'm') c += 13;
else if (c >= 'A' && c <= 'M') c += 13;
else if (c >= 'n' && c <= 'z') c -= 13;
else if (c >= 'N' && c <= 'Z') c -= 13;
System.out.print(c);
}
System.out.println();
}
}
资料来源:http: //introcs.cs.princeton.edu/java/31datatype/Rot13.java.html
private final static List<String> upperAlphabets = Arrays.asList(
"A", "B", "C", "D", "E", "F", "G",
"H", "I", "J", "K", "L", "M", "N",
"O", "P", "Q", "R", "S", "T", "U",
"V", "W", "X", "Y", "Z");
private final static List<String> lowerAlphabets = Arrays.asList(
"a", "b", "c", "d", "e", "f", "g",
"h", "i", "j", "k", "l", "m", "n",
"o", "p", "q", "r", "s", "t", "u",
"v", "w", "x", "y", "z");
private static void rot(int toSkip, String value) {
StringBuilder sb = new StringBuilder();
int pos = 0, newPos = 0;
boolean upper;
for (char c : value.toCharArray()) {
pos = upperAlphabets.indexOf(String.valueOf(c));
if (pos == -1) {
pos = lowerAlphabets.indexOf(String.valueOf(c));
upper = false;
} else {
upper = true;
}
if (pos + toSkip > 25) {
newPos = (pos + toSkip) % 26;
} else {
newPos = pos + toSkip;
}
if (upper) {
sb.append(upperAlphabets.get(newPos));
} else {
sb.append(lowerAlphabets.get(newPos));
}
}
System.out.println(sb);
}
这不仅与 rot13 有关,还可以根据您传递的值执行 rot100 或 rot1213 任何操作,最重要的是,大写和小写字母列表都是必须的。
你做的像dis:
公共类 Rot13 {
pblic static void main(Strng[] args) {
String s = args[0];
for (int i = 0; i < s.length(); i++) {
char c = s.chrAt(i);
if (c >= 'a' & c <= 'm') c += 13;
els if (c >= 'A' & c <= 'M') c += 13;
els if (c >= 'n' & c <= 'z') c -= 13;
els if (c >= 'N' & c <= 'Z') c -= 13;
System.out.print(c);
}
System.out.println();
}