简体   繁体   中英

How to use Ruby's gsub function to replace excessive '\n' on a string

I have this string:

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"

And I'd like to replace all \\n\\n occurrences to only one \\n and if it's possible I'd like to remove also all " " (spaces) between the numbers and the newline character \\n

I'm trying to do:

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

but it is replacing \\n\\n by \\\\n

Can anyone help me?

The real reason is because single quoted sting doesn't escape special characters (like \\n).

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

It replaces one single character \\n with two characters '\\' and 'n'

You can see the difference by printing the string:

[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"

I think you're looking for:

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

This searches for zero or more spaces followed by one or more newlines, and replaces the match with a single newline.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM