Ruby 我如何分割字符串并保留空格呢?

Ruby 我如何分割字符串并保留空格呢?,ruby,string,split,whitespace,Ruby,String,Split,Whitespace,我用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"] 从字符串#split: 如果模式包含组,则将在中返回相应的匹配项 阵

我用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"]
字符串#split

如果模式包含组,则将在中返回相应的匹配项 阵列也是如此

这在Ruby中的作用与在Python中的作用相同,方括号用于指定字符类,而不是匹配组:

"foo bar baz".split(/(\W)/)
# => ["foo", " ", "bar", " ", "baz"]
字符串#split

如果模式包含组,则将在中返回相应的匹配项 阵列也是如此

这在Ruby中的作用与在Python中的作用相同,方括号用于指定字符类,而不是匹配组:

"foo bar baz".split(/(\W)/)
# => ["foo", " ", "bar", " ", "baz"]

toro2k的答案是最直接的。或者

string.scan(/\w+|\W+/)

toro2k的答案是最直接的。或者

string.scan(/\w+|\W+/)

虽然我发现字符串以空格开头有一个细微的区别,但经过测试,它们都能工作:split将返回一个以空字符串开头的数组,然后是空格,然后是第一个单词,等等。而scan将立即以第一个空格开始。经过测试,它们都能工作,虽然我发现字符串以空格开头有一个细微的区别:split将返回一个以空字符串开头的数组,然后是空格,然后是第一个单词,等等。而scan将立即以第一个空格开始。