Comment diviser une chaîne délimitée en Ruby et la convertir en tableau?

J’ai une ficelle

"1,2,3,4"

et je voudrais le convertir en un tableau:

 [1,2,3,4] 

Comment?

 >> "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 le souligne Alex):

 >> "1,2,3,4".split(",").map(&:to_i) => [1, 2, 3, 4] 

"1,2,3,4".split(",") tant que chaînes

"1,2,3,4".split(",").map { |s| s.to_i } "1,2,3,4".split(",").map { |s| s.to_i } sous forme d’entiers

Pour Ssortingng Integer sans espace en tant que Ssortingng

 arr = "12345" arr.split('') output: ["1","2","3","4","5"] 

Pour Ssortingng Integer avec espace en tant que Ssortingng

 arr = "1 2 3 4 5" arr.split(' ') output: ["1","2","3","4","5"] 

Pour un Ssortingng Integer sans espace comme Integer

 arr = "12345" arr.split('').map(&:to_i) output: [1,2,3,4,5] 

Pour ficelle

 arr = "abc" arr.split('') output: ["a","b","c"] 

Explication :

  1. arr -> ssortingng que vous allez effectuer n’importe quelle action.
  2. split() -> est une méthode qui divise l’entrée et la stocke sous forme de tableau.
  3. '' ou ' ' ou ',' -> est une valeur qui doit être supprimée de la chaîne donnée.

le moyen le plus simple de convertir une chaîne qui a un délimiteur comme une virgule est d’utiliser la méthode split

 "1,2,3,4".split(',') # "1", "2", "3", "4"] 

vous pouvez trouver plus d’informations sur l’utilisation de la méthode split dans les ruby docs

Divise str en sous-chaînes basées sur un délimiteur, renvoyant un tableau de ces sous-chaînes.

Si pattern est une chaîne, son contenu est utilisé comme séparateur lors du fractionnement de str. Si pattern est un espace unique, str est divisé sur des espaces, avec des espaces en blanc et des caractères d’espaces contigus ignorés.

Si pattern est une expression régulière, str est divisé à l’endroit où le motif correspond. Chaque fois que le motif correspond à une chaîne de longueur nulle, str est divisé en caractères individuels. Si pattern contient des groupes, les correspondances correspondantes seront également renvoyées dans le tableau.

Si pattern est omis, la valeur de $; est utilisé. Si $ est nul (qui est la valeur par défaut), str est scindé sur des espaces comme si «étaient spécifiés.

Si le paramètre limit est omis, les champs null finaux sont supprimés. Si limite est un nombre positif, au plus ce nombre de champs sera retourné (si limite est 1, la chaîne entière est renvoyée comme seule entrée dans un tableau). S’il est négatif, il n’y a pas de limite au nombre de champs renvoyés et les champs null 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 réalise juste que dans la question initiale, la chaîne contient des virgules, donc ma réponse n’est pas vraiment utile ;-( ..