如何在不保留分隔符的情况下拆分字符串?

时间:2017-07-16 15:40:37

标签: ruby regex string split delimiter

在Ruby中,如何拆分字符串而不将分隔符保留在生成的拆分数组中?我虽然这是默认值,但是当我尝试

2.4.0 :016 >   str = "a b c"
 => "a b c"
2.4.0 :017 > str.split(/([[:space:]]|,)+/)
 => ["a", " ", "b", " ", "c"]

我看到结果中包含的空格。我希望结果只是

["a", "b", "c"]

3 个答案:

答案 0 :(得分:3)

来自String#split文档:

  

如果pattern包含组,则相应的匹配也将在数组中返回。

回答您明确陈述的问题:与小组不匹配:

#           ⇓⇓ HERE
str.split(/(?:[[:space:]]|,)+/)

或者,即使没有小组:

str.split(/[[:space:],]+/)

或者,以更多的Rubyish方式:

'a    b, c,d   e'.split(/[\p{Space},]+/)
#⇒ ["a", "b", "c", "d", "e"]

答案 1 :(得分:2)

默认情况下,

String#split在空格上分割,所以不要打扰正则表达式:

"a b c".split # => ["a", "b", "c"]

答案 2 :(得分:1)

请试试这个

str.split(' ')