2013-12-15 74 views
0

我有这样的字符串:字符串新行字符

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

任何人都可以给我一个提示吗?

+1

我没有看到任何多余的空格 –

+0

您是否试图从文本中去除文字“\ n”?还是硬回报'\ n'? – Marc

+0

您显示的正则表达式不会消除您消除的空间。这是你想实现的改变吗? –

回答

2

我不是你问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" 

,上面写着:“用空格替换任何一个或多个空格字符“。

+0

我想实现: =>“很难击败一个永不放弃的人。” - Babe Ruth – Uzzar

+0

除了不同形式的引用和破折号字符外,这就是上面的结果。 (上面输出的引号是因为它是一个字符串;如果您打印字符串,则不会看到这些字符串。) –

+0

尝试它并打印(与puts相反)会删除输出周围的引号。谢谢! – Uzzar

0

使用String#squeeze删除连续的字符和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'" 

http://ruby-doc.org/core-2.0.0/String.htm

0

有不同的方式去了解这一点,这取决于你想要的最终结果是什么。

作为一个起点:

# 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 

你的样品结果不具有弯引号或连字符(你有一个破折号):

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