75

我想用空格分割一个字符串,,'使用一个 ruby​​ 命令。

  1. word.split将被空格分割;

  2. word.split(",")将由,;

  3. word.split("\'")将分裂'

如何同时完成这三个?

4

6 回答 6

152
word = "Now is the,time for'all good people"
word.split(/[\s,']/)
 => ["Now", "is", "the", "time", "for", "all", "good", "people"] 
于 2013-10-22T05:06:47.197 回答
60

正则表达式。

"a,b'c d".split /\s|'|,/
# => ["a", "b", "c", "d"]
于 2013-10-22T05:04:11.427 回答
29

您可以像这样使用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"]

该解决方案的优点是允许完全动态的定界符或任何长度。

于 2018-07-17T11:42:23.687 回答
23

这是另一个:

word = "Now is the,time for'all good people"
word.scan(/\w+/)
# => ["Now", "is", "the", "time", "for", "all", "good", "people"]
于 2013-10-22T06:33:26.267 回答
5
x = "one,two, three four" 

new_array = x.gsub(/,|'/, " ").split
于 2013-10-22T05:08:55.047 回答
0

我知道这是一个旧线程,但我只是偶然发现它,并认为我会留下另一个答案。我个人喜欢避免使用regex,因为我发现它很难阅读,而且它几乎总是比使用其他内置方法慢。因此,除了上述正则表达式解决方案,我还将考虑使用以下内容:

word.gsub(",", " ").gsub("'", " ").split

第一个gsub用 替换所有出现,space。第二个 gsub 用 a 替换所有出现'space。这导致在whitespace所有所需的位置。然后split在没有参数的情况下简单地分割空格。

它只比前面提到的一些解决方案快一点,但我相信它比已经提到的任何其他解决方案都快。

于 2021-12-28T04:30:34.420 回答