루비 배열에서 문자열로 변환


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"입니다. 결과에 작은 따옴표가 없습니다.
Bernard

1
좋아, 첫 번째와 마지막 작은 따옴표를 추가하기 위해 문자열 보간을 추가했습니다. : P
부식

이것을 되 돌리는 방법?
zx1986

당신이 평균 되돌리기 @ 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}'"대신 사용하십시오.
Mladen Jablanović '

지도가 필요하다고 생각하지 마십시오. 조인은 트릭을 수행해야합니다. 아래 참조
djburdick

31

이 코드를 사용해보십시오 ['12','34','35','231']*","

"12,34,35,231" 결과를 제공합니다

나는 이것이 당신이 결과이기를 바랍니다.


OP에는 작은 따옴표도 있어야한다고 생각합니다.
Laf December


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

이것은 올바른 출력을 생성하지 않습니다. 값은 작은 따옴표로 묶어야합니다. 이것이 원하는 출력 인 경우 string_arr.join ( ",")이 더 나은 옵션입니다.
Sean Cameron

션, 틀렸어 적어도 한 번은 식을 실행 했습니까 ??
avihil

여전히 잘못되었습니다. 작은 따옴표가 아닌 배열 항목을 큰 따옴표로 묶습니다. 또한 "inspect ()"가 데이터를 인쇄하는 형식에 대한 가정에 의존하기 때문에 취약합니다.
Andrew Hodgkinson

[ '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

2

함수형 프로그래밍 방식을 사용하여 데이터를 변환 할 수 있습니다.

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


-5

array.inspect.inspect.gsub(/\[|\]/, "") 트릭을 할 수

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.