Je souhaite fractionner une chaîne par des espaces, ,
Et '
En utilisant une seule commande Ruby.
Word.split
Sera divisé par des espaces blancs;
Word.split(",")
sera divisé par ,
;
Word.split("\'")
sera divisé par '
.
Comment faire les trois à la fois?
Word = "Now is the,time for'all good people"
Word.split(/[\s,']/)
=> ["Now", "is", "the", "time", "for", "all", "good", "people"]
Regex.
"a,b'c d".split /\s|'|,/
# => ["a", "b", "c", "d"]
En voici un autre:
Word = "Now is the,time for'all good people"
Word.scan(/\w+/)
# => ["Now", "is", "the", "time", "for", "all", "good", "people"]
Vous pouvez utiliser une combinaison de la méthode split
et de la Regexp.union
méthode comme ceci:
delimiters = [',', ' ', "'"]
Word.split(Regexp.union(delimiters))
# => ["Now", "is", "the", "time", "for", "all", "good", "people"]
Vous pouvez même utiliser des patrons regex dans les délimiteurs.
delimiters = [',', /\s/, "'"]
Word.split(Regexp.union(delimiters))
# => ["Now", "is", "the", "time", "for", "all", "good", "people"]
Cette solution a l'avantage de permettre des délimiteurs totalement dynamiques ou de toute longueur.
x = "one,two, three four"
new_array = x.gsub(/,|'/, " ").split