如何在ruby中使用regexp拆分字符串

时间:2017-04-25 12:20:43

标签: ruby-on-rails ruby ruby-on-rails-3

我需要根据布尔运算符拆分我的字符串。

现在我正在使用

.split(/(.+?)((?: AND | OR | NOT ))/).reject(&:empty?).reject(&:blank?)

在此方法中,如果字符串以布尔运算符开头,则不会拆分。

经过测试的字符串

  1. a AND b

  2. AND b

  3. 返回输出

    1. [ “一”, “AND”, “B”]

    2. [“AND b”]

    3. 我错过了什么。

2 个答案:

答案 0 :(得分:2)

您可以使用scan

str.scan(/\w+/)
#=> ["Country", "blue", "of", "origin"]

这不仅适用于逗号,也适用于任何非数字非字母字符(_除外)。

<强>更新

仔细查看所需的输出,似乎要保留逗号之间的空格:

  

我想要这样的输出。

     
    

[国家,蓝色,原产地]

  

如果是这样,请改用:

str.scan(/[\w\s]+/)
#=> ["Country ", "blue", "of", " origin"]

答案 1 :(得分:0)

这是解决方案将字符串转换为不带分割的数组

str = "Country ,blue,of, origin"

 Array(str.chars.join(""))