Comment convertir une chaîne Ruby avec des crochets en un Array

Si vous travaillez avec Ruby et que vous rencontrez une chaîne formatée avec des crochets, vous pourriez avoir besoin de convertir cette chaîne en un tableau ou même en un tableau imbriqué. Dans cet article, nous allons examiner un exemple spécifique où une chaîne formatée comme ceci : [[this, is],[a, nested],[array]], doit être transformée en le tableau correspondant : [['this','is'],['a','nested'],['array']].

Comprendre le problème

La chaîne que vous avez peut sembler simple, mais elle peut être assez difficile à analyser pour la convertir en un format de tableau utilisable. Le défi réside dans la structure des éléments et la façon dont Ruby les interprète. Pour y faire face, nous pouvons utiliser YAML, un langage de sérialisation de données que Ruby peut facilement gérer.

Solution étape par étape

Pour convertir votre chaîne en un tableau, suivez ces étapes :

1. Préparez votre chaîne

Votre chaîne originale peut manquer de formatage approprié pour YAML. En particulier, YAML exige qu’il y ait un espace après chaque virgule. Ainsi, nous devons la mettre à jour pour [[this, is], [a, nested], [array]]. Voici comment procéder en Ruby :

str = "[[this, is],[a, nested],[array]]"
str.gsub!(/(\,)(\S)/, "\\1 \\2")

Cette ligne de code modifie la chaîne originale, insérant un espace après chaque virgule si elle est directement suivie par un caractère non espace.

2. Charger la bibliothèque YAML

Pour utiliser les fonctionnalités YAML dans Ruby, nous devons inclure la bibliothèque YAML. Insérez la ligne suivante au début de votre code :

require 'yaml'

3. Convertir la chaîne en un tableau

Une fois que votre chaîne est correctement formatée et que vous avez chargé la bibliothèque YAML, vous pouvez convertir la chaîne en un tableau avec une simple commande :

newarray = YAML::load(str)

Le code final

En mettant le tout ensemble, votre code Ruby final ressemblera à ceci :

require 'yaml'
str = "[[this, is],[a, nested],[array]]"
str.gsub!(/(\,)(\S)/, "\\1 \\2")  # Ajouter un espace après les virgules
newarray = YAML::load(str)        # Convertir en tableau
puts newarray.inspect              # Sortie => [['this', 'is'], ['a', 'nested'], ['array']]

Conclusion

Convertir une chaîne avec des crochets en un tableau dans Ruby est simple si vous gérez correctement les problèmes de formatage et utilisez efficacement la bibliothèque YAML. En quelques lignes de code, vous pouvez manipuler des structures de données sans effort.

Donc, la prochaine fois que vous vous trouvez avec une chaîne formatée comme celle de notre exemple, rappelez-vous ces étapes, et vous pourrez la convertir rapidement en un tableau utilisable !