2017-04-25 58 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("")) 
相關問題