# (this give me list eg : ,s, s, m ...
list = list + "," + name
je veux utiliser split et ensuite rejoindre ... essayez d'utiliser ci-dessous .. je ne sais pas ce que je fais
list = list.split(',') + name + collect{|c| c.name}.to_sentence
list = list.split(',') + name + collect{|c| c.name}.Join(",")
des idées??
J'ai remarqué que cette page apparaît pour la recherche générique sur Google de "chaîne de caractères tableau de caractères Ruby".
Si vous voulez simplement convertir une chaîne en tableau de caractères en Ruby,
"string".chars
# ["s", "t", "r", "i", "n", "g"]
je ne comprends pas votre question, mais si vous voulez convertir une chaîne en tableau
>> "a string".split("")
=> ["a", " ", "s", "t", "r", "i", "n", "g"]
str = "a,b,c"
list = str.split(/,/) # => ["a", "b", "c"]
list.join("-") # => "a-b-c"
D'après votre commentaire, il semble que vous souhaitiez également ajouter une chaîne (ou plusieurs chaînes) à la liste, puis la rejoindre dans une autre chaîne. Peut-être comme ça:
(str.split(/,/) << 'd').join(',') # => "a,b,c,d"
list2 = ['d', 'e', 'f']
(str.split(/,/) << list2).join(',') # => "a,b,c,d,e,f"
La syntaxe Ruby permet également d’appeler des opérateurs avec la notation "point", ce qui pourrait clarifier la situation:
str.split(/,/).<<('d').join(',') # => "a,b,c,d"
str.split(/,/).<<(list2).join(',') # => "a,b,c,d,e,f"
str = "a,b,c"
=> "a,b,c"
array = str.split(/,/)
=> ["a", "b", "c"]
# add more elements to the str:
str << ',x,y,z'
=> "a,b,c,x,y,z"
array2 = str.split(/,/)
=> ["a", "b", "c", "x", "y", "z"]
mais vous voulez probablement quelque chose comme ceci (traiter les chaînes d'entrée et les assembler dans un tableau):
array = []
str = "a,b,c"
array << str.split(/,/)
=> [["a", "b", "c"]]
str = 'x,y,z'
array << str.split(/,/)
=> [["a", "b", "c"], ["x", "y", "z"]]
array.flatten!
=> ["a", "b", "c", "x", "y", "z"]
Je pense que le gros problème est que vous essayez d'utiliser une chaîne, alors que vous devriez vraiment utiliser un tableau. Un deuxième problème est que vous confondez une chaîne délimitée par des virgules avec un tableau ou une liste.
En Ruby, les listes et les tableaux sont des objets différents des chaînes. Les chaînes sont bonnes pour stocker du texte et parfois des données binaires.
Les tableaux sont utiles pour stocker des séquences de données, où vous devez pouvoir y accéder par un index numérique. Les files d'attente et les piles sont généralement écrites au-dessus des tableaux, car ils facilitent l'ajout et la suppression d'éléments au début ou à la fin.
Pour ce faire, je vous recommande d’utiliser un objet Array, puis join(',')
le tableau lorsque vous avez besoin de la représentation sous forme de chaîne.
ary = [] #=> []
ary << 'item 1' #=> ["item 1"]
ary << 'item 2' #=> ["item 1", "item 2"]
ary.join(',') #=> "item 1,item 2"
n'oubliez pas scan
dans mon cas, j'ai un vrai code ami, un "grand" entier (8 chiffres), pour une meilleure lisibilité, je veux mettre des tirets tous les 2 chiffres:
friend_code.scan(/../).join("-")
votre solution serait
friend_code.scan(/./).join(",")
Si vous essayez de faire en sorte que votre "liste" soit une représentation sous forme de chaîne d'une collection de noms et que vous souhaitez y ajouter un nom (également une chaîne) délimitée du reste par (par exemple) une virgule, être une chaîne, tout ce dont vous avez besoin est une concaténation de chaîne:
list + ',' + name
Une méthode plus agréable pour le faire, du moins pour moi, est l'interpolation de chaîne:
"#{list},#{name}"
Cela rend plus clair le fait que vous manipulez des données pour les formater.
Toutefois, si vous souhaitez convertir votre "liste" en tableau en le séparant par des virgules et en ajoutant la variable name à la fin, la réponse est essentiellement la même, avec String#split
et la concaténation du tableau:
list.split(',') + name
J'espère que l'une de ces deux solutions est la solution à votre problème!