我有这个字符串:
"some text\nandsomemore"
我需要从中删除“\ n”。我试过了
"some text\nandsomemore".gsub('\n','')
但它不起作用。我该怎么做?谢谢你的阅读。
答案 0 :(得分:152)
您需要在gsub中使用"\n"
而不是'\n'
。不同的引号表现不同。
双引号"
允许字符扩展和表达式插值,即。他们允许你使用像\n
这样的转义控件字符来表示它们的真实值,在这种情况下, newline ,并允许使用#{expression}
以便你可以编织变量,以及,几乎任何你喜欢的红宝石表达。
另一方面,单引号'
按字面意思处理字符串,所以没有扩展,替换,插值或者你有什么。
在这种特殊情况下,最好使用.delete
或.tr
String方法删除换行符。
答案 1 :(得分:55)
如果要删除字符串,而不是替换它,可以使用String#delete
(或其mutator等效String#delete!
),例如:
x = "foo\nfoo"
x.delete!("\n")
x
现在等于“foofoo”
在这种特定情况下,String#delete
比gsub
更具可读性,因为您实际上并没有用任何内容替换字符串。
答案 2 :(得分:45)
如果您想要或不介意删除字符串中的所有前导和尾随空格,可以使用strip
方法。
" hello ".strip #=> "hello"
"\tgoodbye\r\n".strip #=> "goodbye"
如上所述here。
修改此问题的原始标题不同。我的回答是原来的问题。
答案 3 :(得分:27)
你不需要正则表达式。使用tr:
"some text\nandsomemore".tr("\n","")
答案 4 :(得分:16)
使用Ruby的chomp
或strip
函数:
"abcd\n".chomp => "abcd"
"abcd\n".strip => "abcd"
答案 5 :(得分:2)