Мой опыт показывает, что элементы управления Java Swing JTextField и JTable GUI экранируют введенные пользователем обратные косые черты с помощью префикса обратной косой черты.
Пользователь вводит двухсимвольную последовательность «обратная косая черта t», метод getText () элемента управления возвращает строку, содержащую трехсимвольную последовательность «обратная косая черта обратной косой черты t».Форматировщик SO делает свое дело с обратной косой чертой в тексте, поэтому здесь он выглядит как код:
Single backslash: input is 2 char sequence \t and return value is 3 char \\t
Для трехсимвольной входной последовательности "backsl backsl t", getText () возвращает пятисимвольную последовательность "backslbacksl backsl backsl t ".Как код:
Double backslash: input is 3 char sequence \\t and return value is 5 char \\\\t
Это в основном не позволяет обратной косой черте изменять t, чтобы получить последовательность символов, которая становится вкладкой, когда интерпретируется чем-то вроде System.out.println.
Удобно, иУдивительно для меня, процессор регулярных выражений принимает его в любом случае .Двухсимвольная последовательность «\ t» соответствует символу табуляции, как и трехсимвольная последовательность «\\ t».Пожалуйста, посмотрите демо-код ниже.Вызовы system.out показывают, какие последовательности и шаблоны имеют вкладки, и в JDK 1.7 оба совпадения дают значение true.
package my.text;
/**
* Demonstrate use of tab character in regexes
*/
public class RegexForSo {
public static void main(String [] argv) {
final String sequenceTab="x\ty\tz";
final String patternBsTab = "x\t.*";
final String patternBsBsTab = "x\\t.*";
System.out.println("sequence is >" + sequenceTab + "<");
System.out.println("pattern BsTab is >" + patternBsTab + "<");
System.out.println("pattern BsBsTab is >" + patternBsBsTab + "<");
System.out.println("matched BsTab = " + sequenceTab.matches(patternBsTab));
System.out.println("matched BsBsTab = " + sequenceTab.matches(patternBsBsTab));
}
}
Вывод в моей системе JDK1.7 приведен ниже, вкладки ввыходные данные могут не сохраниться ТАК форматер:)
sequence is >x y z<
pattern BsTab is >x .*<
pattern BsBsTab is >x\t.*<
matched BsTab = true
matched BsBsTab = true
HTH