2017-04-25 4 views
-4

Ich muss meine Zeichenfolge basierend auf booleschen Operatoren teilen.Wie man Zeichenkette mit regexp in Ruby spalten

Jetzt bin ich mit

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

Bei diesem Verfahren wird es aufgeteilt nicht, wenn die Zeichenfolge mit Booleschen Operatoren beginnen.

Getestet Saiten

  1. a UND b

  2. UND b

Ausgabe zurückgegeben

  1. [ "a", "AND", "b "]

  2. [ "und b"]

was bin ich verpasst.

+4

Können Sie erklären warum? – Ursus

+2

Sie konvertieren keine Zeichenfolgen, Sie können nur unterschiedliche Zeichenfolgen erstellen. Deine Frage macht keinen Sinn. –

+1

Meinst du du willst: '['County', 'blau', 'von', 'Herkunft']'? –

Antwort

2

Ihre scan verwenden:

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

Dies funktioniert nicht nur mit Komma, aber alle nicht-numerischen, nicht-Buchstaben-Zeichen (außer _).

UPDATE

genau an den gewünschten Ausgang Blick scheint es, dass Sie die Räume zwischen Kommas halten wollen:

Ich möchte ein wie diese gewünschte Ausgabe.

[Land, blau, der, Ursprung]

Wenn ja dieses statt:

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

Hier ist die Lösung convert String-Array ohne Split

str = "Country ,blue,of, origin" 

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