删除多余的空白区域,但留下一个空格

时间:2018-04-28 23:19:43

标签: ruby string whitespace gsub strip

我希望能够在其中随机放置一个带有'WUB'字样的字符串,并删除那些用空格替换的实例。

实施例。 “WUBWUBWUBWEWUBWUBAREWUBWUBWUBTHEWUBCHAMPIONSWUBWUBMYWUBFRIENDS”

变成...... 我们是我的朋友们的冠军

然而,问题在于我收到的每个“WUB”都有额外的空白区域。如何取出额外的空白区域并仅保留一个空白区域?

def song_decoder(song)
  song.gsub!(/WUB/, " ")
  song.strip!
  print song
  return song
end

song_decoder("WUBWUBWUBWEWUBWUBAREWUBWUBWUBTHEWUBCHAMPIONSWUBWUBMYWUBFRIENDS")

# above is test case

3 个答案:

答案 0 :(得分:2)

/WUB/获得所有" WUB"在字符串中,所以如果有一些连续的,你将有两个空格,并在结果上使用条带,只删除所有空格,所以不会是你期望的。

你可以得到任何" WUB"作为群组,并用'替换它们。 &#39 ;.由于这个特定的结果只留下了一个初始的空格(第一个字符),lstrip会处理它:

str = 'WUBWUBWUBWEWUBWUBAREWUBWUBWUBTHEWUBCHAMPIONSWUBWUBMYWUBFRIENDS'
p str.gsub(/(WUB)+/, ' ').lstrip
# "WE ARE THE CHAMPIONS MY FRIENDS"

答案 1 :(得分:0)

我刚刚找到了挤压方法!

def song_decoder(song)
  song.gsub!(/WUB/, " ")
  song.strip!
  song.squeeze!(" ")
  print song
  return song
end

这正是我所需要的。我很抱歉。

答案 2 :(得分:0)

没有正则表达式:

"WUBWUBWUBWEWUBWUBAREWUBWUBWUBTHEWUBCHAMPIONSWUBWUBMYWUBFRIENDS".
  split('WUB').reject(&:empty?).join(' ')
#⇒ "WE ARE THE CHAMPIONS MY FRIENDS"