Answers:
您需要在您的gsub中使用"\n"not '\n'。不同的引号具有不同的行为。
双引号"允许字符扩展和表达式内插,即。它们使您可以使用转义的控制字符\n来表示其真实值(在本例中为newline),并允许使用,#{expression}这样您就可以将变量以及几乎所有喜欢的ruby表达式编织到文本中。
另一方面,单引号会'按字面意义对待字符串,因此没有扩展,替换,内插或其他功能。
在这种情况下,最好使用.deleteor或.trString方法删除换行符。
tr是一个更好的选择,但是正如我所说,我认为最好在回答时指出单引号,双引号的区别。
当您想删除一个字符串而不是替换它时,可以使用String#delete(或其等效的mutator String#delete!),例如:
x = "foo\nfoo"
x.delete!("\n")
x 现在等于“ foofoo”
在这种特定情况下,由于您实际上并未用任何东西替换字符串,String#delete因此更具可读性gsub。
delete不是破坏性的,如此处所示。它返回一个新字符串。
Ruby的使用chomp或strip功能:
"abcd\n".chomp => "abcd"
"abcd\n".strip => "abcd"
strip仅删除开头