如何使用Ruby';s gsub功能,用于替换过多的'\n';一串

如何使用Ruby';s gsub功能,用于替换过多的'\n';一串,ruby,regex,replace,gsub,Ruby,Regex,Replace,Gsub,我有这个字符串: string = "SEGUNDA A SEXTA\n05:24 \n05:48\n06:12\n06:36\n07:00\n07:24\n07:48\n\n08:12 \n08:36\n09:00\n09:24\n09:48\n10:12\n10:36\n11:00 \n11:24\n11:48\n12:12\n12:36\n13:00\n13:24\n13:48 \n14:12\n14:36\n15:00\n15:24\n15:48\n16:12\n16:36 \n17:0

我有这个字符串:

string = "SEGUNDA A SEXTA\n05:24 \n05:48\n06:12\n06:36\n07:00\n07:24\n07:48\n\n08:12 \n08:36\n09:00\n09:24\n09:48\n10:12\n10:36\n11:00 \n11:24\n11:48\n12:12\n12:36\n13:00\n13:24\n13:48 \n14:12\n14:36\n15:00\n15:24\n15:48\n16:12\n16:36 \n17:00\n17:24\n17:48\n18:12\n18:36\n19:00\n19:48 \n20:36\n21:24\n22:26\n23:15\n00:00\n"
我想将所有出现的
\n\n
替换为一个
\n
,如果可能的话,我还想删除数字和换行符
\n
之间的所有
(空格)

我正在努力做到:

string.gsub(/\n\n/, '\n')
但是它正在用
\\n


有人能帮我吗?

我想你在找:

string.gsub( / *\n+/, "\n" )

这将搜索零个或多个空格,后跟一个或多个换行符,并用一个换行符替换匹配项。

真正的原因是单引号的sting不会转义特殊字符(如\n)

string.gsub(/\n/,'\n')

它用两个字符“\”和“n”替换单个字符\n

您可以通过打印字符串来查看差异:

[302] pry(main)> puts '\n'
\n
=> nil

[303] pry(main)> puts "\n"

=> nil

[304] pry(main)> string = '\n'
=> "\\n"
[305] pry(main)> string = "\n"
=> "\n"

用双引号代替单引号。你可以让它更简洁,比如:
string.gsub(/\n{2}/,“\n”)
。删除数字之间的空格?我不敢回答这个问题,但是:
string.gsub(/(?@squiguy)-从技术上讲,这少了一个字符。单引号的sting不会转义特殊字符是不真实的,它会逃避一切。因此“\n”相当于“\\n”。