我有一个字符串“ hello world!怎么样?”
我需要的输出是“ helloworld!Howisitgoing?”
因此,您好在问候之后的所有空白都应删除。我正在尝试使用正则表达式在红宝石中做到这一点。
我尝试了strip和delete('')方法,但没有得到想要的东西。
some_string = " hello world! How is it going?"
some_string.delete(' ') #deletes all spaces
some_string.strip #removes trailing and leading spaces only
请帮助。预先感谢!
答案 0 :(得分:3)
有许多方法可以在没有正则表达式的情况下完成,但是使用它们可能是不带子字符串的“最干净”外观的方法,等等。我相信您正在寻找的正则表达式是{{1} }。
/(?!^)(\s)/
" hello world! How is it going?".gsub(/(?!^)(\s)/, '')
#=> " helloworld!Howisitgoing?"
与任何空格字符(包括制表符等)匹配,而\s
是一个“锚”,表示字符串的开头。 ^
表示拒绝符合以下条件的比赛。结合使用它们可以实现您的目标。
如果您不熟悉gsub
,则它与!
非常相似,但是使用正则表达式。此外,它还有一个replace
对应部分,可以在适当的位置更改字符串,而无需创建新的更改副本。
请注意,严格来说,这不是所有在单词后面的空格都可以引用确切的问题,但是我从您的示例中收集到,您的意图是“除字符串开头之外的所有空格”,这将实现。 / p>
答案 1 :(得分:1)
def remove_spaces_after_word(str, word)
i = str.index(/\b#{word}\b/i)
return str if i.nil?
i += word.size
str.gsub(/ /) { Regexp.last_match.begin(0) >= i ? '' : ' ' }
end
remove_spaces_after_word("Hey hello world! How is it going?", "hello")
#=> "Hey helloworld!Howisitgoing?"