Bir ipim var
"1,2,3,4"
ve bunu bir diziye dönüştürmek istiyorum:
[1,2,3,4]
Nasıl?
Bir ipim var
"1,2,3,4"
ve bunu bir diziye dönüştürmek istiyorum:
[1,2,3,4]
Nasıl?
Yanıtlar:
>> "1,2,3,4".split(",")
=> ["1", "2", "3", "4"]
Veya tamsayılar için:
>> "1,2,3,4".split(",").map { |s| s.to_i }
=> [1, 2, 3, 4]
Veya ruby'nin sonraki sürümleri için (> = 1.9 - Alex'in işaret ettiği gibi):
>> "1,2,3,4".split(",").map(&:to_i)
=> [1, 2, 3, 4]
String Integer
boşluk bırakmadan olarakString
arr = "12345"
arr.split('')
output: ["1","2","3","4","5"]
String Integer
boşluk olarak birlikteString
arr = "1 2 3 4 5"
arr.split(' ')
output: ["1","2","3","4","5"]
String Integer
boşluk bırakmadan olarakInteger
arr = "12345"
arr.split('').map(&:to_i)
output: [1,2,3,4,5]
arr = "abc"
arr.split('')
output: ["a","b","c"]
Açıklama :
arr
-> herhangi bir eylem gerçekleştireceğiniz dize.split()
-> girişi bölen ve dizi olarak saklayan bir yöntemdir.''
veya ' '
veya ','
->, verilen dizeden kaldırılması gereken bir değerdir.virgül gibi bir sınırlayıcı içeren bir dizgeyi dönüştürmenin en basit yolu sadece split yöntemini kullanmaktır
"1,2,3,4".split(',') # "1", "2", "3", "4"]
ruby docs'ta split yönteminin nasıl kullanılacağı hakkında daha fazla bilgi bulabilirsiniz
Str'yi alt dizelere ayırır ve bu alt dizelerin bir dizisini döndürür.
Desen bir Dize ise, str'yi bölerken içeriği sınırlayıcı olarak kullanılır. Desen tek bir boşluksa str, boşluk üzerinde bölünür ve önde gelen boşluk ve bitişik boşluk karakterleri yoksayılır.
Desen bir Regexp ise str, desenin eşleştiği yere bölünür. Desen sıfır uzunluklu bir dizeyle eşleştiğinde, str tek tek karakterlere bölünür. Kalıp gruplar içeriyorsa, ilgili eşleşmeler dizide de döndürülür.
Desen atlanırsa, $ değeri; kullanıldı. Eğer $; nil (varsayılan değerdir), str boşlukta `` belirtilmiş gibi bölünür.
Limit parametresi atlanırsa, sondaki boş alanlar bastırılır. Sınır pozitif bir sayıysa, en fazla bu alan sayısı döndürülür (sınır 1 ise, dizenin tamamı bir dizideki tek girdi olarak döndürülür). Negatifse, döndürülen alan sayısı için bir sınır yoktur ve sondaki boş alanlar bastırılmaz.
"12345".each_char.map(&:to_i)
each_char
temel olarak aynıdır split('')
: Bir dizeyi karakter dizisine böler.
hmmm, şimdi sadece orijinal soruda dize virgül içerdiğini anlıyorum, bu yüzden cevabım gerçekten yararlı değil ;-( ..