В конце концов, независимо от того, какой метод используется, нужно будет что-то посмотреть на каждый символ в строке. Вы можете сделать это явно в цикле, как вы сейчас делаете, или с помощью цепочки набора вызовов replace (). Но, хотя на бумаге они могут выглядеть короче, они могут занять больше времени.
Для этого используйте replace()
:
"\ttest\n\n".replace("\t", "\\t").replace("\n", "\\n")/*…*/;
Чтобы сделать это в цикле, посмотрите на ответ от Andreas_D .
Обратите внимание, что метод replace()
, хотя и короче на бумаге, почти наверняка займет больше времени для запуска, так как для замены каждой escape-последовательности он должен повторяться по всей строке 8 раз, тогда как для ручного цикла требуется только сделать это один раз.
Редактировать : Первоначально я думал, что вы, вероятно, могли бы сделать это с помощью магического регулярного выражения, однако вы не можете выполнить условное замещение в регулярном выражении, что означает, что вы можете сделать только эквивалент показанных вызовов замены. выше. Учитывая, что в этом случае регулярные выражения будут немного медленнее, я не думаю, что это хорошее решение.