У меня есть эта строка:
"some text\nandsomemore"
Мне нужно удалить из него "\n". Я пробовал
"some text\nandsomemore".gsub('\n','')
но это не сработает. Как мне это сделать? Спасибо за чтение.
У меня есть эта строка:
"some text\nandsomemore"
Мне нужно удалить из него "\n". Я пробовал
"some text\nandsomemore".gsub('\n','')
но это не сработает. Как мне это сделать? Спасибо за чтение.
Вам нужно использовать "\n"
not '\n'
в вашем gsub. Различные кавычки ведут себя по-разному.
Двойные кавычки "
позволяют расширять символы и интерполяцию выражения, т.е. они позволяют использовать экранированные контрольные символы, такие как \n
, чтобы представить их истинное значение, в этом случае, новую строку и разрешить использование #{expression}
, чтобы вы могли переплетать переменные и, ну, в общем, любое выражение ruby, которое вам нравится в тексте.
С другой стороны, одинарные кавычки '
обрабатывают строку буквально, поэтому нет расширения, замены, интерполяции или того, что у вас есть.
В этом конкретном случае лучше использовать метод .delete
или .tr
String для удаления строк новой строки.
Если вы хотите удалить строку, а не ее заменить, вы можете использовать String#delete
(или его эквивалент мутанта String#delete!
), например:
x = "foo\nfoo"
x.delete!("\n")
x
теперь равно "foofoo"
В этом конкретном случае String#delete
более читаем, чем gsub
, так как вы фактически не заменяете строку чем-либо.
Если вы хотите или не возражаете, чтобы все исходные и конечные пробелы из вашей строки были удалены, вы можете использовать метод strip
.
" hello ".strip #=> "hello"
"\tgoodbye\r\n".strip #=> "goodbye"
как упоминалось здесь.
edit Оригинальное название для этого вопроса было другим. Мой ответ на исходный вопрос.
Для этого вам не нужно регулярное выражение. Используйте tr:
"some text\nandsomemore".tr("\n","")
использовать функции chomp
или strip
из Ruby:
"abcd\n".chomp => "abcd"
"abcd\n".strip => "abcd"
Посмотрите здесь: