将长白色空间减少为单个字符

时间:2014-07-10 14:39:45

标签: ruby regex

我正在使用ruby而我正在尝试将长长的空白缩小为单个字符。这是我正在尝试的代码:

str = hello world    how     are  you 
puts str.gsub(/\s/, '#')

输出我当前的代码:

hello#world####how#####are##you

期望的输出:

hello#world#how#are#you

知道如何达到我想要的输出吗?

5 个答案:

答案 0 :(得分:6)

尝试:

puts str.gsub(/\s+/, '#')

答案 1 :(得分:3)

你很接近,你错过了正则表达式与多个空格的匹配。试试这个:

str.gsub(/\s+/, '#')

希望有所帮助。

答案 2 :(得分:2)

str = hello world    how     are  you

puts str.gsub(/\s+/, '#')

# => hello#world#how#are#you

答案 3 :(得分:2)

"hello world    how     are  you"
.squeeze(" ").tr(" ", "#")
# => "hello#world#how#are#you"

答案 4 :(得分:0)

[当用户Iain要求解释我所做的事情时]

在Regex中,\ s +表示1个或多个空白字符。使用ruby的gsub方法,我将使用'#'替换匹配模式(在本例中为1个或多个空白字符)。字符。而且,我正在irb中测试此示例代码。

    1.9.3-p327 :013 > str = "hello world    how     are  you" 
     => "hello world    how     are  you"  
    1.9.3-p327 :016 > str.gsub(/\s+/, '#')
     => "hello#world#how#are#you" 

额外提示:rubular是一个很棒的在线工具,可以测试和使用Regexp!