Ruby dizeden dizeye dönüşüm


178

Benim gibi bir yakut dizim var ['12','34','35','231'].

Gibi bir dizeye dönüştürmek istiyorum '12','34','35','231'.

Bunu nasıl yapabilirim?

Yanıtlar:


315

Eğlenceye aşağıdakilerle katılacağım:

['12','34','35','231'].join(', ')

DÜZENLE:

"'#{['12','34','35','231'].join("', '")}'"

İlk ve son tek tırnak eklemek için bazı dize enterpolasyonu: P


1
Bu, "12,34,35,231" ile sonuçlanır. Sonuçtaki tek tırnak eksik.
Bernard

1
Tamam, ilk ve son tek tırnakları eklemek için bazı dize enterpolasyonu ekledi: P
aşınmış

nasıl geri alınır?
zx1986

ne demek istedin @ zx1986
aşınmış

@ Corroded Üzgünüm, anladım. JSON.parse("[12, 39, 100]")bir dizi döndürür.
zx1986

43
> a = ['12','34','35','231']
> a.map { |i| "'" + i.to_s + "'" }.join(",")
=> "'12','34','35','231'"

6
Belki de "'#{i}'"yerine.
Mladen Jablanović

haritanın gerekli olduğunu düşünmeyin. katılmak hile yapmak gerekir. aşağıya bakınız
djburdick

31

bu kodu dene ['12','34','35','231']*","

sonuç verir "12,34,35,231"

Umarım bu sonuç sizsiniz, bana bildirin


Bence OP tek bir teklif de gerekiyor.
Laf


9
string_arr.map(&:inspect).join(',') # or other separator

Bu doğru çıktıyı üretmez - değerlerin tek tırnak içine alınması gerekir. Bu istenen çıktı olsaydı string_arr.join (",") daha iyi bir seçenek olurdu.
Sean Cameron

Sean, yanılıyorsun. İfadeyi en az bir kez mi çalıştırdınız ??
avihil

Hala yanlış. Tekli tırnaklar değil, dizi girişleri etrafında çift tırnak ile sonuçlanır. Ayrıca, verileri inceleyen (inceleyen () "biçimin, onu kırılgan hale getiren varsayımına dayanır.
Andrew Hodgkinson

['1', '2', '3']. Harita {| o | "\ '# {o} \'"} .join (',')
avihil

7

Bu şekilde okunabilir ve yakut buluyorum:

add_quotes =- > x{"'#{x}'"}

p  ['12','34','35','231'].map(&add_quotes).join(',') => "'12','34','35','231'"

5
> puts "'"+['12','34','35','231']*"','"+"'"
'12','34','35','231'

> puts ['12','34','35','231'].inspect[1...-1].gsub('"',"'")
'12', '34', '35', '231'

4

Ve yine başka bir varyasyon

a = ['12','34','35','231']
a.to_s.gsub(/\"/, '\'').gsub(/[\[\]]/, '')

3
irb(main)> varA
=> {0=>["12", "34", "35", "231"]}
irb(main)> varA = Hash[*ex.collect{|a,b| [a,b.join(",")]}.flatten]
...

3
irb(main):027:0> puts ['12','34','35','231'].inspect.to_s[1..-2].gsub('"', "'")
'12', '34', '35', '231'
=> nil

2

Verileri dönüştürerek bazı fonksiyonel programlama yaklaşımlarını kullanabilirsiniz:

['12','34','35','231'].map{|i| "'#{i}'"}.join(",")


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.