Я ищу способ конвертировать строку, содержащую escape-последовательность символов в представленный символ.
Итак, например, я хочу проанализировать строку \"
(которая имеет два символа, обратную косую черту и двойную кавычку) в char "
. Итак, массив символов в один char.
Итак, что-то вроде этого и наоборот:
package test;
public class Test {
private static char parseChar(String string) {
char c = 0;
if ("\\n".equals(string)) {
c = '\n';
}else if ("\\t".equals(string)) {
c = '\t';
}else if ("\\r".equals(string)) {
c = '\r';
}else if ("\\f".equals(string)) {
c = '\f';
}else if ("\\b".equals(string)) {
c = '\b';
}else if ("\\\'".equals(string)) {
c = '\'';
}else if ("\\\"".equals(string)) {
c = '\"';
}else if ("\\\\".equals(string)) {
c = '\\';
}
return c;
}
public static void main(String[] args) {
for (String arg : args) {
System.out.println(arg + " : " + (int)parseChar(arg) + " : " + parseChar(arg) + ";");
}
}
}
Я не мог поверить, что в java.lang нет ничего, что могло бы дать мне хороший (возможно, родной) код, потому что я считаю, что приведенный выше код может быть неполным и не анализировать каждый проблематичный (escapable?) символ, потому что ну, я нооб. Я хочу инструмент, который может делать то же самое, что и конструктор String:
String st = "\"";
char ch = st.charAt(0);
ch output: ";
Спасибо, что прочитали это, извините, если не ясно, я буду регулярно проверять и исправлять, если вас попросят.
PS
Когда я запускаю приведенный выше код:
java -classpath ~/workspace/MacroRecorder/bin/test.Test\\n\\t\\f\\r\\b \\\ '\\\ "\\\\;
... выводит
\n : 10 :
;
\t : 9 : ;
\f : 12 :
;
;r : 13 :
\b : 8 :;
\' : 39 : ';
\" : 34 : ";
\\ : 92 : \;
Но в Eclipse вывод полностью отличается от тех же параметров, особенно "очень грязный".