Comment diviser des valeurs délimitées par des virgules entre guillemets simples contenant des virgules en Ruby

StackOverflow https://stackoverflow.com/questions/819563

  •  03-07-2019
  •  | 
  •  

Question

Disons que j'ai une chaîne avec des valeurs délimitées par des virgules entre guillemets simples, qui peuvent inclure ou non des virgules, comme ceci:

"'apples,bananas','lemons'"

et je veux diviser cela dans un tableau

["apples,bananas", "lemons"]

Apparemment, si je divise (',') la chaîne que je reçois

[ "'apples", "bananas'", "lemons" ]

que je ne comprends pas. La seule façon de faire ce que je suis venu avec est

a = []
s = "'apples,bananas','lemons'"
s.scan(/\'([^\']+)\'/){|i| a << i[0]}

# result is ["apples,bananas", "lemons"]

Mais y a-t-il un moyen plus élégant? Y at-il quelque chose avec la méthode de scission que je ne comprends pas, qui provoque un résultat étrange?

Était-ce utile?

La solution

En fait, la scission fonctionne comme prévu. Mais il semble que vous essayez de scinder les valeurs séparées par des virgules. Et il y a déjà une solution à cela dans la bibliothèque stdlib de Ruby:

http://www.ruby-doc.org /stdlib/libdoc/csv/rdoc/index.html

Ou si vous voulez une bibliothèque externe (supposée être meilleure, plus rapide, ...), utilisez FasterCSV .

Autres conseils

Le résultat de #split est parfaitement normal, la méthode n'est pas supposée rendre la chaîne de façon symbolique. Choisissez la façon dont vous savez que fonctionne sur un élégant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top