Заменить \\ n \\ r \\ t в рельсах - PullRequest
0 голосов
/ 11 октября 2018

У меня есть текстовое поле inout, где пользователь может скопировать данные вставки, я хочу заменить \r \n \t, но когда данные публикуются, эти символы экранируются.

Таким образом, строка, введенная пользователем, например hello \r\n\t world, публикуется как hello \\r\\n\\t world

Я хочу заменить эти символы, но из-за того, что они экранированы, я не могу использовать что-то вроде gsub(/\s+/, ' ')

Может кто-нибудь подсказать, какой был бы идеальный способ заменить экранированные символы.

Спасибо.

1 Ответ

0 голосов
/ 11 октября 2018

Если вы получаете буквально backslash-r , вам нужно отменить отображение этих символов:

CONVERT = {
  '\r' => "\r",
  '\t' => "\t",
  '\n' => "\n"
}

CONVERT_RX = Regexp.union(CONVERT.keys)

'this\nis\tinput\r\n'.gsub(CONVERT_RX, CONVERT)
# => "this\nis\tinput\r\n"

Вы можете добавить дополнительные записи в эту таблицу по мере необходимости.

Оттуда, если вы хотите убрать или преобразовать пробелы, вы можете сделать это, как обычно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...