2017-04-25 27 views
-4

我需要根据布尔运算符分割我的字符串。如何在ruby中使用正则表达式分割字符串

现在,我使用

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

在这种方法中,如果字符串与布尔运算符启动时,它没拆。

测试字符串

  1. A和B

  2. 和B

返回的输出

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

  2. [ “和B”]

我是什么遗漏。

+4

你能解释一下为什么吗? – Ursus

+2

你不转换字符串,你只能创建不同的字符串。你的问题没有道理。 –

+1

你的意思是你想要:'['县','蓝','','起源']'? –

回答

2

你可以使用scan

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

这将工作不仅用逗号,但任何非数字,非字母字符(除_)。

UPDATE

在您需要的输出仔细观察,它似乎要保持逗号之间的空间:

我想这样的期望输出。

[国家,蓝色,的,起源]

如果是这样,而不是使用该:

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

下面是解字符串转换为阵列而不分裂

str = "Country ,blue,of, origin" 

Array(str.chars.join("")) 
相关问题