Функция ROT-13 в java?
Существует ли уже реализация rot13()
и unrot13()
как часть одной из стандартных библиотек Java? Или мне нужно написать его сам и "изобретать велосипед"?
Он может выглядеть примерно так:
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;
}
Ответы
Ответ 1
Я не думаю, что это часть 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
Ответ 2
Могу также внести вклад в мою функцию, чтобы сохранить других разработчиков ценные секунды
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();
}