我需要根据布尔运算符分割我的字符串。如何在ruby中使用正则表达式分割字符串
现在,我使用
.split(/(.+?)((?: AND | OR | NOT))/).reject(&:empty?).reject(&:blank?)
在这种方法中,如果字符串与布尔运算符启动时,它没拆。
测试字符串
A和B
和B
返回的输出
[ “一”, “AND”,“B “]
[ “和B”]
我是什么遗漏。
我需要根据布尔运算符分割我的字符串。如何在ruby中使用正则表达式分割字符串
现在,我使用
.split(/(.+?)((?: AND | OR | NOT))/).reject(&:empty?).reject(&:blank?)
在这种方法中,如果字符串与布尔运算符启动时,它没拆。
测试字符串
A和B
和B
返回的输出
[ “一”, “AND”,“B “]
[ “和B”]
我是什么遗漏。
你可以使用scan
:
str.scan(/\w+/)
#=> ["Country", "blue", "of", "origin"]
这将工作不仅用逗号,但任何非数字,非字母字符(除_
)。
UPDATE
在您需要的输出仔细观察,它似乎要保持逗号之间的空间:
我想这样的期望输出。
[国家,蓝色,的,起源]
如果是这样,而不是使用该:
str.scan(/[\w\s]+/)
#=> ["Country ", "blue", "of", " origin"]
下面是解字符串转换为阵列而不分裂
str = "Country ,blue,of, origin"
Array(str.chars.join(""))
你能解释一下为什么吗? – Ursus
你不转换字符串,你只能创建不同的字符串。你的问题没有道理。 –
你的意思是你想要:'['县','蓝','','起源']'? –