Как я могу удалить строку "n"из строки Ruby?


у меня есть эта строка:

"some textnandsomemore"

мне нужно удалить "n " из него. Я пробовал

"some textnandsomemore".gsub('n','')

но это не работает. Как мне это сделать? Спасибо за чтение.

6 93

6 ответов:

вы должны использовать "\n" не '\n' в gsub. Различные кавычки ведут себя по-разному.

двойные кавычки " разрешено расширение характера и выражения интерполяции, т. е. они позволяют использовать экранированные контрольные символы, такие как \n чтобы представить их истинное значение, в данном случае,новая строка, и разрешить использование #{expression} таким образом, вы можете вплетать переменные и, ну, почти любое рубиновое выражение, которое вам нравится в текст.

в то время как с другой стороны, одинарные кавычки ' относиться к строке буквально, так что нет расширения, замены, интерполяции или что у вас есть.

в данном конкретном случае лучше использовать .delete или .tr строковый метод для удаления строки.

см. здесь для получения дополнительной информации

когда вы хотите удалить строку, а не заменить его, вы можете использовать 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"