Wie kann man eine durch Trennzeichen getrennte Zeichenfolge in Ruby aufteilen und in ein Array konvertieren?

233

Ich habe eine Schnur

"1,2,3,4"

und ich möchte es in ein Array konvertieren:

[1,2,3,4]

Wie?

Neil Middleton
quelle
11
1,2 | 3; 42: 4711 .scan (/ \ d + /). Map {| i | i.to_i}
Jonas Elfström

Antworten:

412
>> "1,2,3,4".split(",")
=> ["1", "2", "3", "4"]

Oder für ganze Zahlen:

>> "1,2,3,4".split(",").map { |s| s.to_i }
=> [1, 2, 3, 4]

Oder für spätere Versionen von Ruby (> = 1,9 - wie von Alex hervorgehoben):

>> "1,2,3,4".split(",").map(&:to_i)
=> [1, 2, 3, 4]
Shadwell
quelle
28
Denken Sie daran, wenn Sie> = 1.9 verwenden, können Sie einfach "1,2,3,4" .split (','). Map (: to_i)
Alex Fort
7
Wenn Sie aktiven Support verwenden, können Sie Folgendes tun: map (&: to_i)
jonnii
31

"1,2,3,4".split(",") als Saiten

"1,2,3,4".split(",").map { |s| s.to_i } als ganze Zahlen

Oliver N.
quelle
19

Denn String Integerohne Platz alsString

arr = "12345"

arr.split('')

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

Für String Integermit Raum alsString

arr = "1 2 3 4 5"

arr.split(' ')

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

Denn String Integerohne Platz alsInteger

arr = "12345"

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

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

Für String

arr = "abc"

arr.split('')

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

Erklärung :

  1. arr -> Zeichenfolge, mit der Sie eine Aktion ausführen werden.
  2. split() -> ist eine Methode, die die Eingabe aufteilt und als Array speichert.
  3. ''oder ' 'oder ','-> ist ein Wert, der aus der angegebenen Zeichenfolge entfernt werden muss.
Aravin
quelle
1

Der einfachste Weg, eine Zeichenfolge mit einem Trennzeichen wie einem Komma zu konvertieren, ist die Verwendung der Split-Methode

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

Weitere Informationen zur Verwendung der Split-Methode finden Sie in den Ruby-Dokumenten

Teilt str basierend auf einem Trennzeichen in Teilzeichenfolgen und gibt ein Array dieser Teilzeichenfolgen zurück.

Wenn pattern ein String ist, wird sein Inhalt als Trennzeichen beim Teilen von str verwendet. Wenn das Muster ein einzelnes Leerzeichen ist, wird str in Leerzeichen aufgeteilt, wobei führende Leerzeichen und Läufe zusammenhängender Leerzeichen ignoriert werden.

Wenn das Muster ein Regexp ist, wird str dort geteilt, wo das Muster übereinstimmt. Immer wenn das Muster mit einer Zeichenfolge mit der Länge Null übereinstimmt, wird str in einzelne Zeichen aufgeteilt. Wenn das Muster Gruppen enthält, werden die entsprechenden Übereinstimmungen auch im Array zurückgegeben.

Wenn das Muster weggelassen wird, wird der Wert von $; wird eingesetzt. Wenn $; ist nil (dies ist die Standardeinstellung), str wird auf Leerzeichen aufgeteilt, als ob `'angegeben worden wäre.

Wenn der Grenzwertparameter weggelassen wird, werden nachfolgende Nullfelder unterdrückt. Wenn limit eine positive Zahl ist, wird höchstens diese Anzahl von Feldern zurückgegeben (wenn limit 1 ist, wird die gesamte Zeichenfolge als einziger Eintrag in einem Array zurückgegeben). Wenn negativ, gibt es keine Begrenzung für die Anzahl der zurückgegebenen Felder, und nachfolgende Nullfelder werden nicht unterdrückt.

MZaragoza
quelle
-1
"12345".each_char.map(&:to_i)

each_charmacht im Grunde das gleiche wie split(''): Es teilt einen String in ein Array seiner Zeichen.

hmmm, ich merke gerade, dass die Zeichenfolge in der ursprünglichen Frage Kommas enthält, daher ist meine Antwort nicht wirklich hilfreich ;-( ..

andiba
quelle
3
Können Sie Ihre Antwort bearbeiten, um zu erklären, was Sie tun?
MZaragoza