Sagen wir, ich habe eine Zeichenfolge mit Komma getrennte Werte in einfache Anführungszeichen eingeschlossen spalten, die so kann oder nicht Kommas enthalten,:Wie einzelne zitierte Komma getrennte Werte enthält Kommas in Ruby
"'apples,bananas','lemons'"
und ich möchte aufgeteilt, dass in ein Array
["apples,bananas", "lemons"]
Offenbar, wenn ich die Zeichenfolge split(',')
ich
[ "'apples", "bananas'", "lemons" ]
was ich nicht verstehe. Die einzige Möglichkeit, dies zu tun, ist
a = []
s = "'apples,bananas','lemons'"
s.scan(/\'([^\']+)\'/){|i| a << i[0]}
# result is ["apples,bananas", "lemons"]
Aber gibt es eine elegantere Art und Weise? Gibt es etwas mit der Split-Methode, das ich nicht bekomme, was das seltsame Ergebnis verursacht?
Die CSV-Bibliothek scheint hilfreich zu sein. Wenn die Zeichenfolge wie folgt formatiert wäre: s = "\" Äpfel, Bananen \ ", Zitronen" (mit doppelten doppelten Anführungszeichen statt einfachen Anführungszeichen), könnte ich CSV :: parse_line (s) machen und das gewünschte Ergebnis erhalten. Dies könnte eine mögliche Lösung sein. –
Zumindest mit FasterCSV können Sie die vorhandene Zeichenfolge ohne Neuformatierung analysieren. require 'schneller_csv'; "'Äpfel, Bananen', 'Zitronen'. parse_csv (: quote_char => ''") ergibt ["Äpfel, Bananen", "Zitronen"], nach denen Sie suchen, glaube ich. –
Greg, du hast Recht. 1 für dieses Rezept. –