it-swarm.com.de

kann String in Array konvertieren?

# (this give me list eg : ,s, s, m ...
list = list + "," + name

ich möchte mit split und dann beitreten ... versuche unten zu arbeiten ... ich weiß nicht, was ich tue

list = list.split(',') + name + collect{|c| c.name}.to_sentence 
list = list.split(',') + name + collect{|c| c.name}.Join(",")

irgendwelche Ideen??

22
user557657

Mir ist aufgefallen, dass diese Seite für die generische Google-Suche nach "String to Char Array Ruby" erscheint.

Wenn Sie in Ruby nur einen String in ein Char-Array konvertieren möchten,

"string".chars
# ["s", "t", "r", "i", "n", "g"]
37
Jason Kim

ich verstehe Ihre Frage nicht, aber wenn Sie String in Array konvertieren möchten

>> "a string".split("")
=> ["a", " ", "s", "t", "r", "i", "n", "g"]
18
kurumi
str = "a,b,c"
list = str.split(/,/) # => ["a", "b", "c"]
list.join("-") # => "a-b-c"

In Ihrem Kommentar sieht es so aus, als ob Sie auch einen String (oder mehrere Strings) an die Liste anhängen und dann wieder zu einem anderen String zusammenfügen möchten. Vielleicht so:

(str.split(/,/) << 'd').join(',') # => "a,b,c,d"
list2 = ['d', 'e', 'f']
(str.split(/,/) << list2).join(',') # => "a,b,c,d,e,f"

Die Ruby-Syntax erlaubt auch das Aufrufen von Operatoren mit der "Punkt" -Notation. Dies könnte die Situation erklären:

str.split(/,/).<<('d').join(',') # => "a,b,c,d"
str.split(/,/).<<(list2).join(',') # => "a,b,c,d,e,f"
4
maerics
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"] 

sie möchten jedoch wahrscheinlich etwas Ähnliches (Eingabezeichenfolgen verarbeiten und in einem Array zusammenstellen):

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"] 
1
Tilo

Ich denke, das große Problem ist, dass Sie versuchen, eine Zeichenfolge zu verwenden, wenn Sie eigentlich ein Array verwenden sollten. Ein zweites Problem ist, dass Sie eine durch Kommas getrennte Zeichenfolge mit einem Array oder einer Liste verwechseln.

In Ruby sind Listen und Arrays andere Objekte als Strings. Zeichenketten eignen sich zum Speichern von Text und manchmal auch von binären Daten. 

Arrays eignen sich zum Speichern von Datensequenzen, bei denen Sie über einen numerischen Index darauf zugreifen müssen. Warteschlangen und Stapel werden im Allgemeinen auf Arrays geschrieben, da Arrays das Hinzufügen und Entfernen von Elementen am Anfang oder Ende erleichtern.

Für Ihren Zweck würde ich empfehlen, ein Array-Objekt und dann join(',') das Array zu verwenden, wenn Sie die Zeichenfolgendarstellung benötigen. 

ary = []        #=> []
ary << 'item 1' #=> ["item 1"]
ary << 'item 2' #=> ["item 1", "item 2"]
ary.join(',')   #=> "item 1,item 2"
0
the Tin Man

scan nicht vergessen 

in meinem Fall habe ich einen echten Freundescode, eine "große" Ganzzahl (8 Ziffern). Zur besseren Lesbarkeit möchte ich alle 2 Ziffern Bindestriche setzen: 

friend_code.scan(/../).join("-")

ihre Lösung wäre 

friend_code.scan(/./).join(",") 
0
halfbit

Wenn Sie versuchen, Ihre "Liste" als Zeichenfolgendarstellung einer Sammlung von Namen anzeigen zu lassen, und Sie einen Namen (auch eine Zeichenfolge) hinzufügen möchten, der vom Rest durch ein Komma (beispielsweise) getrennt ist, und das Ergebnis haben Sei ein String, du brauchst nur eine String-Verkettung:

list + ',' + name

Eine schönere Methode, zumindest für mich, ist die Interpolation von Strings:

"#{list},#{name}"

Dadurch wird klarer, dass Sie Daten bearbeiten, um sie zu formatieren.

Wenn Sie jedoch möchten, dass Ihre "Liste" in ein Array konvertiert wird, indem Sie sie durch Kommas teilen und die Namensvariable am Ende hinzufügen, ist die Antwort im Wesentlichen die gleiche, mit String#split und Array-Verkettung:

list.split(',') + name

Hoffentlich ist eines davon die Lösung für Ihr Problem!

0
Tom