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.