web-dev-qa-db-fra.com

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

J'ai une ficelle

"1,2,3,4"

et je voudrais le convertir en tableau:

[1,2,3,4]

Comment?

221
Neil Middleton
>> "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]
400
Shadwell

"1,2,3,4".split(",") comme des chaînes

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

31
Oliver N.

Pour String Integer sans espace comme String

arr = "12345"

arr.split('')

output: ["1","2","3","4","5"]

Pour String Integer avec un espace comme String

arr = "1 2 3 4 5"

arr.split(' ')

output: ["1","2","3","4","5"]

Pour String Integer sans espace comme Integer

arr = "12345"

arr.split('').map(&:to_i)

output: [1,2,3,4,5]

Pour cordes

arr = "abc"

arr.split('')

output: ["a","b","c"]

Explication:

  1. arr -> chaîne que vous allez exécuter.
  2. split() -> est une méthode qui scinde 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.
17
Aravin

le moyen le plus simple de convertir une chaîne comportant un délimiteur, tel qu'une virgule, consiste simplement à 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 le Ruby docs

Divise str en sous-chaînes en fonction d'un délimiteur, renvoyant un tableau de ces sous-chaînes.

Si pattern est une chaîne, son contenu est utilisé comme délimiteur lors du fractionnement de str. Si motif est un espace unique, str est divisé en espaces, les espaces en tête et les caractères d'espacement contigus ignorés.

Si pattern est une expression rationnelle, str est divisé en deux parties. 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 respectives seront également renvoyées dans le tableau.

Si motif est omis, la valeur de $; est utilisé. Si $; est nul (ce qui est la valeur par défaut), str est divisé en espaces comme si "" était spécifié.

Si le paramètre limit est omis, les champs nuls de fin sont supprimés. Si limit est un nombre positif, ce nombre de champs au plus sera renvoyé (si limit est égal à 1, la chaîne entière est renvoyée en tant que seule entrée d'un tableau). S'il est négatif, le nombre de champs retournés n'est pas limité et les champs nuls suivants ne sont pas supprimés.

1
MZaragoza