【发布时间】:2016-02-04 13:54:40
【问题描述】:
我有一串任意字符。我想把它变成一个数组,其中每个字符都在一个数组元素中,除了连续的单词字符(\w+),它们应该最终一起出现在一个数组元素中。示例:
ab.:u/87z
应该变成
['ab','.',':','u','/','87z']
我的第一个方法是这样的:
mystring.split(/\b/)
当然,这会将非单词字符组合在一起:
['ab','.:','u','/','87','z']
我可以在后续步骤中将它们分开,但我正在寻找一种更优雅的方式。接下来我尝试了这些:
mystring.split(/(\w+|\W)/)
mystring.split(/(\b|\W)/)
两者都返回了几乎想要的结果,只是它们还返回包含空字符串的数组元素,所以我必须写类似
mystring.split(/(\b|\W)/).reject(&:empty?)
现在我的问题是:有没有更简单的方法可以做到这一点?
更新:我在解释我的例子时犯了一个愚蠢的错误。当然'87'和'z'应该在一起,即'87z'。我修正了我的例子。
【问题讨论】:
-
感谢您的指出。我提供示例的错误。现在修好了。