J'ai une chaîne
"1,2,3,4"
et je voudrais le convertir en un tableau:
[1,2,3,4]
Comment?
J'ai une chaîne
"1,2,3,4"
et je voudrais le convertir en un tableau:
[1,2,3,4]
Comment?
Réponses:
>> "1,2,3,4".split(",")
=> ["1", "2", "3", "4"]
Ou pour les entiers:
>> "1,2,3,4".split(",").map { |s| s.to_i }
=> [1, 2, 3, 4]
Ou pour les versions ultérieures de ruby (> = 1.9 - comme l'a souligné Alex):
>> "1,2,3,4".split(",").map(&:to_i)
=> [1, 2, 3, 4]
String Integer
sans espace commeString
arr = "12345"
arr.split('')
output: ["1","2","3","4","5"]
String Integer
avec l'espace commeString
arr = "1 2 3 4 5"
arr.split(' ')
output: ["1","2","3","4","5"]
String Integer
sans espace commeInteger
arr = "12345"
arr.split('').map(&:to_i)
output: [1,2,3,4,5]
arr = "abc"
arr.split('')
output: ["a","b","c"]
Explication :
arr
-> chaîne sur laquelle vous allez effectuer n'importe quelle action.split()
-> est une méthode qui divise l'entrée et la stocke en tant que tableau.''
ou ' '
ou ','
-> est une valeur, qui doit être supprimée de la chaîne donnée.la façon la plus simple de convertir une chaîne qui a un délimiteur comme une virgule est simplement d'utiliser la méthode de fractionnement
"1,2,3,4".split(',') # "1", "2", "3", "4"]
vous pouvez trouver plus d'informations sur la façon d'utiliser la méthode de fractionnement dans les documents ruby
Divise str en sous-chaînes en fonction d'un délimiteur, renvoyant un tableau de ces sous-chaînes.
Si le modèle est une chaîne, son contenu est utilisé comme délimiteur lors du fractionnement de str. Si le motif est un espace unique, str est divisé sur un espace blanc, les espaces blancs de début et les séquences de caractères d'espaces contigus étant ignorés.
Si le modèle est une expression rationnelle, str est divisé là où le modèle correspond. Chaque fois que le modèle correspond à une chaîne de longueur nulle, str est divisé en caractères individuels. Si le modèle contient des groupes, les correspondances respectives seront également renvoyées dans le tableau.
Si le motif est omis, la valeur de $; est utilisé. Si $; est nul (ce qui est la valeur par défaut), str est divisé sur un espace comme si `` était spécifié.
Si le paramètre limit est omis, les champs nuls de fin sont supprimés. Si la limite est un nombre positif, au plus ce nombre de champs sera retourné (si la limite est 1, la chaîne entière est retournée comme la seule entrée dans un tableau). S'il est négatif, il n'y a pas de limite au nombre de champs retournés et les champs nuls de fin ne sont pas supprimés.
"12345".each_char.map(&:to_i)
each_char
fait essentiellement la même chose que split('')
: Il divise une chaîne en un tableau de ses caractères.
hmmm, je me rends compte maintenant que dans la question d'origine, la chaîne contient des virgules, donc ma réponse n'est pas vraiment utile ;-( ..