我想用一个ruby命令通过空格、,和'来分割一个字符串。
,
'
word.split
word.split(",")
word.split("\'")
disho6za1#
word = "Now is the,time for'all good people" word.split(/[\s,']/) => ["Now", "is", "the", "time", "for", "all", "good", "people"]
piok6c0g2#
Regex。
"a,b'c d".split /\s|'|,/ # => ["a", "b", "c", "d"]
guykilcj3#
你可以像这样使用split方法和Regexp.union方法的组合:
split
Regexp.union
delimiters = [',', ' ', "'"] word.split(Regexp.union(delimiters)) # => ["Now", "is", "the", "time", "for", "all", "good", "people"]
您甚至可以在分隔符中使用正则表达式模式。
delimiters = [',', /\s/, "'"] word.split(Regexp.union(delimiters)) # => ["Now", "is", "the", "time", "for", "all", "good", "people"]
这种解决方案的优点是允许完全动态的分隔符或任何长度。
4xy9mtcn4#
下面是另一个:
word = "Now is the,time for'all good people" word.scan(/\w+/) # => ["Now", "is", "the", "time", "for", "all", "good", "people"]
Ruby正则表达式中的\w+匹配一个或多个字母数字字符。它的工作原理是查找第一个字母数字字符,然后检查下一个字符。如果下一个字符是字母数字,它将包含在匹配中。重复此过程,直到找到非字母数字字符。
\w+
szqfcxe25#
x = "one,two, three four" new_array = x.gsub(/,|'/, " ").split
pb3s4cty6#
我知道这是一个旧的线程,但我只是偶然发现它,并认为我会留下另一个答案。我个人喜欢避免使用regex,因为我发现它很难阅读,而且它几乎总是比使用其他内置方法慢。因此,除了上述的正则表达式解决方案,我还考虑使用以下方法:
regex
word.gsub(",", " ").gsub("'", " ").split
第一个gsub将所有出现的,替换为space。第二个gsub将所有出现的'替换为space。这导致在所有所需位置处的whitespace。然后,没有参数的split只是在空白处分裂。它只比前面提到的一些解决方案快一点,但我相信它比前面提到的任何其他解决方案都快。
gsub
space
whitespace
6条答案
按热度按时间disho6za1#
piok6c0g2#
Regex。
guykilcj3#
你可以像这样使用
split
方法和Regexp.union
方法的组合:您甚至可以在分隔符中使用正则表达式模式。
这种解决方案的优点是允许完全动态的分隔符或任何长度。
4xy9mtcn4#
下面是另一个:
Ruby正则表达式中的
\w+
匹配一个或多个字母数字字符。它的工作原理是查找第一个字母数字字符,然后检查下一个字符。如果下一个字符是字母数字,它将包含在匹配中。重复此过程,直到找到非字母数字字符。szqfcxe25#
pb3s4cty6#
我知道这是一个旧的线程,但我只是偶然发现它,并认为我会留下另一个答案。我个人喜欢避免使用
regex
,因为我发现它很难阅读,而且它几乎总是比使用其他内置方法慢。因此,除了上述的正则表达式解决方案,我还考虑使用以下方法:第一个
gsub
将所有出现的,
替换为space
。第二个gsub将所有出现的'
替换为space
。这导致在所有所需位置处的whitespace
。然后,没有参数的split
只是在空白处分裂。它只比前面提到的一些解决方案快一点,但我相信它比前面提到的任何其他解决方案都快。