Ruby 字符串字符串中的新行字符

Ruby 字符串字符串中的新行字符,ruby,regex,Ruby,Regex,我有这个字符串: "“It's hard to beat a person who never gives up.”\n ―\n Babe Ruth" 我成功地将其剥离到以下位置: “It's hard to beat a person who never gives up.”\n ―\n Babe Ruth 使用此正则表达式: /^"(.*)"/ 现在,我需要去除两个新行字符,并删除多余的空白。这就是我想要回报的: => "It's hard to beat a per

我有这个字符串:

"“It's hard to beat a person who never gives up.”\n    ―\n    Babe Ruth"
我成功地将其剥离到以下位置:

“It's hard to beat a person who never gives up.”\n ―\n Babe Ruth
使用此正则表达式:

/^"(.*)"/
现在,我需要去除两个新行字符,并删除多余的空白。这就是我想要回报的:

=> "It's hard to beat a person who never gives up." - Babe Ruth 

谁能给我一个提示吗

我不是100%清楚你在问什么,但我认为你想要这样的东西:

s = "“It's hard to beat a person who never gives up.”\n    ―\n    Babe Ruth"
s.gsub(/\s+/, " ")
# => "“It's hard to beat a person who never gives up.” ― Babe Ruth"
也就是说,“用空格替换任何一个或多个空白字符。”

使用
String#square
删除连续字符,使用
String#gsub
删除换行符:

string = "\“It's hard to beat a person who never gives up.\”\n    ―\n    Babe Ruth'"

string.squeeze(' ').gsub("\n", '')                                                                                              
#=> "“It's hard to beat a person who never gives up.” ― Babe Ruth'"

根据最终结果的不同,可以采用不同的方法

作为起点:

# encoding: UTF-8

puts "“It's hard to beat a person who never gives up.”\n    ―\n    Babe Ruth".gsub(/\s\s+/, ' ')
# >> “It's hard to beat a person who never gives up.” ― Babe Ruth
您的示例结果没有卷曲引号或连字符(您的示例结果有em破折号):


我看不到任何多余的空格。是否要从文本中删除文字“\n”?或者硬返回
\n
?您显示的正则表达式不会消除您消除的空格。这就是您想要实现的更改吗?使用regex无法在一次操作中实现这一点,因此只需使用regex获取字符串,然后使用ruby方法删除换行符您的示例结果具有不同的引号字符。您想去掉卷曲引号,还是将其转换为直引号?此外,连字符从em破折号改为普通连字符。我想实现:=>“打败一个永不放弃的人是很难的。”-贝比·鲁思除了引号和破折号字符的不同形式外,这就是上面的结果。(上面输出周围的引号是因为它是一个字符串;如果打印该字符串,您将看不到它们。)尝试打印(与puts相反)会删除输出周围的引号。谢谢正则表达式可以是简单的
\s+
@DarshanComputing那么,
\s{2,}
可能更有效,因为它可能不会不必要地用空格替换单个空格,但这取决于
gsub
的内部结构。
puts "“It's hard to beat a person who never gives up.”\n    ―\n    Babe Ruth".gsub(/\s\s+/, ' ').tr('“”―', '""-')
# >> "It's hard to beat a person who never gives up." - Babe Ruth