在Ruby中,如何在不将短语拆分为单词并丢失单词分隔符的情况下从短语中删除数字单词?

时间:2011-09-24 09:34:05

标签: ruby regex

我正在尝试从短语中删除数字。我写的是:

phrase = 'hello 234234 word'
words = phrase.split(/\W/)
words.reject!{ |w| w.match(/^\d+$/) }
words.join(' ')

或者,单行:

phrase = phrase.split(/\W/).reject{ |w| w.match(/^\d+$/) }.join(' ')

示例:

"hello 123 word" should end "hello word"
"hello 123word" should end "hello 123word"
"hello 123.word" should end "hello word"

此解决方案的问题在于它也删除了分隔符这个词。 (见上面的第3个例子)

有没有更好,更简洁的方法来同时保存单词分隔符?

2 个答案:

答案 0 :(得分:2)

这个正则表达式完成了这项工作:

phrase.gsub!(/\b\d+\b/, "")

这个gsub摆脱了数字词。

答案 1 :(得分:0)

我会这样做:

phrase.gsub!(/ \d+ /, " ")

需要使用括号来防止ruby认为您正在尝试继续行。