我有这个字符串:
"some text\nandsomemore"
我得把“\n”去掉我试过
"some text\nandsomemore".gsub('\n','')
但它不起作用我该怎么做?谢谢你的阅读。
mw3dktmi1#
你需要在你的gsub中使用"\n"而不是'\n'。不同的引号表现不同。双引号"允许字符扩展和表达式插值。它们允许你使用像\n这样的转义控制字符来表示它们的真实值,在这个例子中,newline,并允许使用#{expression},这样你就可以将变量和几乎任何你喜欢的ruby表达式编织到文本中。而另一方面,单引号'从字面上处理字符串,所以没有扩展,替换,插值或其他什么。在这种情况下,最好使用.delete或.tr String方法来删除 newlines。查看更多信息
"\n"
'\n'
"
\n
#{expression}
'
.delete
.tr
svujldwt2#
如果你想或者不介意删除字符串中所有的前导和尾随空格,你可以使用strip方法。
strip
" hello ".strip #=> "hello" "\tgoodbye\r\n".strip #=> "goodbye"
如前所述here。
2uluyalo3#
当你想删除一个字符串,而不是替换它,你可以使用String#delete(或它的mutator等价物String#delete!),例如:
String#delete
String#delete!
x = "foo\nfoo" x.delete!("\n")
x现在等于“foofoo”在这种特定情况下,String#delete比gsub更可读,因为实际上并没有用任何东西替换字符串。
x
gsub
bvjxkvbb4#
你不需要正则表达式。使用tr:
"some text\nandsomemore".tr("\n","")
im9ewurl5#
使用Ruby中的chomp或strip函数:
chomp
"abcd\n".chomp => "abcd" "abcd\n".strip => "abcd"
piok6c0g6#
出于某种原因,这些答案在我的情况下都不起作用,我想出了自己的解决方案:
"some text\nandsomemore".split.join
6条答案
按热度按时间mw3dktmi1#
你需要在你的gsub中使用
"\n"
而不是'\n'
。不同的引号表现不同。双引号
"
允许字符扩展和表达式插值。它们允许你使用像\n
这样的转义控制字符来表示它们的真实值,在这个例子中,newline,并允许使用#{expression}
,这样你就可以将变量和几乎任何你喜欢的ruby表达式编织到文本中。而另一方面,单引号
'
从字面上处理字符串,所以没有扩展,替换,插值或其他什么。在这种情况下,最好使用
.delete
或.tr
String方法来删除 newlines。查看更多信息
svujldwt2#
如果你想或者不介意删除字符串中所有的前导和尾随空格,你可以使用
strip
方法。如前所述here。
2uluyalo3#
当你想删除一个字符串,而不是替换它,你可以使用
String#delete
(或它的mutator等价物String#delete!
),例如:x
现在等于“foofoo”在这种特定情况下,
String#delete
比gsub
更可读,因为实际上并没有用任何东西替换字符串。bvjxkvbb4#
你不需要正则表达式。使用tr:
im9ewurl5#
使用Ruby中的
chomp
或strip
函数:piok6c0g6#
出于某种原因,这些答案在我的情况下都不起作用,我想出了自己的解决方案: