Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Замена esc-последовательностей в строке


Автор: Lotrex 28.8.2007, 11:04
Пусть есть такая строка:

"Location: \n c:\\Program Files\\Home\\MyPreferences"

Эту строку (а так же ей подобные) я хочу  хранить в файле пользовательских настроек в виде  пар ключ  = значение.  Например, так:

Comment = "Location: \n c:\\Program Files\\Home\\MyPreferences"
SaveDirectory = "C:\\\"data files\"\\results\\12-08-07"
LoadDirectory = "C:\\\"data files\"\\sourcef\\12-08-07"

Эти настроки надо: читать-->(заменить esc-последовательности)-->(использовать/изменять)-->(вставить esc-последовательности, где нужно)-->сохранять.

например, из C:\\\"data files\"\\results\\12-08-07 при чтении должно получиться нечто такое:
  C:\"data files"\results\12-08-07

с чтением понятно - в принципе, можно использовать метод printf класса PrintStream для замены esc-последовательностей на соответствующие символы. 

А как выполнить обратное преобразование - вставить в нужные места esc-последовательности для замены соответствующих спец-символов? Есть ли какие-нить классы с соответствующими методами? Ручками это я могу и сам сделать, но не хочется - задача выглядит стандартной и мучит уверенность в том, что в библиотеке классов уже это есть, просто я не могу это найти :( 

Автор: Се ля ви 28.8.2007, 11:55
На ум приходят только RegExp`ы - всяко лучше, чем ручками, но удобнее что-то наверняка есть.

Автор: nornad 28.8.2007, 15:35
Можно попробовать использовать String.replaceAll() или, если не получиться, обычные рег.выражения.
Паттерн для поиска эскейпов: "\\(.)"
Паттерн для замены (если прокатит; иначе - получаем символ по группе и собираем выходную строку руками): "\1"

Автор: Lotrex 3.9.2007, 07:24
Всем спасибо! Промаялся 2 дня, потом сделал ручками за 2 часа smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)