Wie einzelne zitierte Komma getrennte Werte enthält Kommas in Ruby aufzuspalten
-
03-07-2019 - |
Frage
Sagen wir, ich habe eine Zeichenfolge mit Komma Werte begrenzt in einfachen Anführungszeichen, die Kommas, wie dies kann oder nicht enthalten:
"'apples,bananas','lemons'"
und ich möchte, dass in ein Array aufteilen
["apples,bananas", "lemons"]
Offensichtlich wenn ich split(',')
die Zeichenfolge ich
[ "'apples", "bananas'", "lemons" ]
, die ich nicht verstehe. Der einzige Weg, dies zu tun, das ich habe kommen mit ist
a = []
s = "'apples,bananas','lemons'"
s.scan(/\'([^\']+)\'/){|i| a << i[0]}
# result is ["apples,bananas", "lemons"]
Aber gibt es eine elegantere Möglichkeit? Gibt es etwas, mit der Split-Methode, die ich nicht bekommen, was das seltsame Ergebnis verursacht?
Lösung
Eigentlich arbeitet spaltete sich die Art und Weise es soll. Aber es scheint, wie Sie versuchen, durch Komma getrennte Werte zu teilen. Und es gibt bereits eine Lösung für sie in Rubys stdlib:
http://www.ruby-doc.org /stdlib/libdoc/csv/rdoc/index.html
Oder wenn Sie ein externes libray (das angeblich besser, schneller, ...) verwenden FasterCSV .
Andere Tipps
Das Ergebnis #split ist vollkommen normal, ist das Verfahren soll nicht die Zeichenfolge in irgendeiner Weise zerlegen. Suchen Sie sich die Art und Weise Sie wissen, dass über eine elegante gearbeitet.