Rubyの配列から文字列への変換


178

私のようなルビー配列があり['12','34','35','231']ます。

のような文字列に変換したい'12','34','35','231'

どうやってやるの?

回答:


315

私は楽しみに参加します:

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

編集:

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

最初と最後の単一引用符を追加するための文字列補間:P


1
その結果、「12,34,35,231」になります。結果の単一引用符が欠落しています。
バーナード

1
最初と最後の単一引用符を追加するために文字列補間を追加しました:P
2012

これを元に戻すには?
zx1986 '19年

@ zx1986を元に戻す
腐食

@corrodedすみません、わかりました。JSON.parse("[12, 39, 100]")配列を返します。
zx1986

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

6
おそらく"'#{i}'"代わりに使用します。
MladenJablanović2010

地図が必要だとは思わないでください。参加はトリックを行う必要があります。以下を参照してください
djburdick

31

このコードを試してください ['12','34','35','231']*","

結果は「12、34、35、231」になります

これがあなたの結果であることを願っています、私に知らせてください


OPも一重引用符が必要だと思います。
Laf


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

これは正しい出力を生成しません-値は一重引用符で囲む必要があります。これが望ましい出力である場合、string_arr.join( "、")がより良いオプションになります。
Sean Cameron

ショーン、あなたは間違っている。少なくとも一度は式を実行しましたか?
avihil 2013

それはまだ間違っています。その結果、単一引用符ではなく、配列エントリが二重引用符で囲まれます。さらに、「inspect()」がデータを印刷する形式についての仮定に依存しているため、データが壊れやすくなっています。
アンドリューホジキンソン2013

['1'、 '2'、 '3']。map {| o | "\ '#{o} \'"} .join( '、')
avihil

7

私はこの方法を読みやすく、ルビッシュにしています:

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

そしてさらに別のバリエーション

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


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.