如何从一个Rubystring中删除string“\ n”?

我有这个string:

"some text\nandsomemore" 

我需要从中删除“\ n”。 我试过了

 "some text\nandsomemore".gsub('\n','') 

但它不起作用。 我该怎么做? 谢谢阅读。

你需要在你的gsub中使用"\n"而不是'\n' 。 不同的引号标记行为有所不同。

双引号"允许字符扩展和expression式插值,即它们让你使用像\n这样的转义控制字符表示它们的真实值,在这种情况下, 换行符 ,并允许使用#{expression}所以你可以编织variables, ,几乎任何你喜欢的文本中的rubyexpression式。

而另一方面,单引号'string处理”,所以没有扩展,replace,插值或你有什么。

在这种情况下,最好使用.delete.trstring方法来删除换行符

在这里看到更多的信息

当你想删除一个string,而不是replace它,你可以使用String#delete (或者它的mutator相当于String#delete! ),例如:

 x = "foo\nfoo" x.delete!("\n") 

x现在等于“foofoo”

在这个特定的情况下, String#deletegsub更具可读性,因为你实际上并没有用任何东西replacestring。

如果您想要或不介意删除string中的所有前导空格和尾部空白,则可以使用strip方法。

 " hello ".strip #=> "hello" "\tgoodbye\r\n".strip #=> "goodbye" 

如这里所述 。

编辑这个问题的原始标题是不同的。 我的答案是针对原来的问题。

你不需要这个正则expression式。 使用tr:

 "some text\nandsomemore".tr("\n","") 

使用Ruby的chompstrip函数:

 "abcd\n".chomp => "abcd" "abcd\n".strip => "abcd" 

看这里:

  • 如何用一个换行符replace一行中的多个换行符