我在 Python 中做了以下操作:
s = 'This is a text'
re.split('(\W)', s)
# => ['This', ' ', 'is', ' ', 'a', 'text']
它工作得很好。如何在 Ruby 中进行同样的拆分?
我试过这个,但它吃掉了我的空白。:
s = "This is a text"
s.split(/[\W]/)
# => ["This", "is", "a", "text"]
我在 Python 中做了以下操作:
s = 'This is a text'
re.split('(\W)', s)
# => ['This', ' ', 'is', ' ', 'a', 'text']
它工作得很好。如何在 Ruby 中进行同样的拆分?
我试过这个,但它吃掉了我的空白。:
s = "This is a text"
s.split(/[\W]/)
# => ["This", "is", "a", "text"]
从String#split
文档中:
如果 pattern 包含组,则相应的匹配项也将在数组中返回。
这在 Ruby 中的工作方式与在 Python 中相同,方括号用于指定字符类,而不是匹配组:
"foo bar baz".split(/(\W)/)
# => ["foo", " ", "bar", " ", "baz"]
toro2k 的回答是最直接的。或者,
string.scan(/\w+|\W+/)