如何在 ruby 中使用正则表达式拆分字符串
How to split string using regexp in ruby
我需要根据布尔运算符拆分我的字符串。
现在我正在使用
.split(/(.+?)((?: AND | OR | NOT ))/).reject(&:empty?).reject(&:blank?)
在此方法中,如果字符串以布尔运算符开头,则不会拆分。
测试字符串
a 和 b
AND b
返回输出
["a","AND","b"]
["AND b"]
我错过了什么
你可以使用 scan
:
str.scan(/\w+/)
#=> ["Country", "blue", "of", "origin"]
这不仅适用于逗号,还适用于任何非数字、非字母字符(_
除外)。
更新
仔细查看您想要的输出,您似乎希望保留逗号之间的空格:
I want a desired output like this.
[Country ,blue,of, origin]
如果是这样,请改用它:
str.scan(/[\w\s]+/)
#=> ["Country ", "blue", "of", " origin"]
这是将字符串转换为数组而不拆分的解决方案
str = "Country ,blue,of, origin"
Array(str.chars.join(""))
我需要根据布尔运算符拆分我的字符串。
现在我正在使用
.split(/(.+?)((?: AND | OR | NOT ))/).reject(&:empty?).reject(&:blank?)
在此方法中,如果字符串以布尔运算符开头,则不会拆分。
测试字符串
a 和 b
AND b
返回输出
["a","AND","b"]
["AND b"]
我错过了什么
你可以使用 scan
:
str.scan(/\w+/)
#=> ["Country", "blue", "of", "origin"]
这不仅适用于逗号,还适用于任何非数字、非字母字符(_
除外)。
更新
仔细查看您想要的输出,您似乎希望保留逗号之间的空格:
I want a desired output like this.
[Country ,blue,of, origin]
如果是这样,请改用它:
str.scan(/[\w\s]+/)
#=> ["Country ", "blue", "of", " origin"]
这是将字符串转换为数组而不拆分的解决方案
str = "Country ,blue,of, origin"
Array(str.chars.join(""))