문자열 배열을 쉼표로 구분 된 문자열로 어떻게 변환합니까?
배열이 있습니다.
array = ["10", "20", "50", "99"]
그리고 다음과 같이 간단한 쉼표로 구분 된 문자열 목록으로 변환하고 싶습니다.
"10", "20", "50", "99"
["10", "20", "50","99"].map(&:inspect).join(', ') # => '"10", "20", "50", "99"'
array.join(',')
당신이 원하는 것을 거의 할 것입니다. 값 주위의 따옴표 나 뒤의 공백은 유지하지 않습니다.
시세 및 공간을 유지하는 경우 : array.map{|item| %Q{"#{item}"}}.join(', ')
이 인쇄됩니다 "\"10\", \"20\", \"50\", \"99\""
. 이스케이프 된 따옴표는 질문이 실제로 단일 문자열을 호출한다고 가정 할 때 필요합니다.
에 대한 문서 %Q
: 문자열 리터럴 .
당신은 할 수 사용 inspect
으로 다른 답변에서 제안 , 나는 그것이 개인적인 취향 말하고 싶지만. 나는 그 소스 코드 를보고 직접 선택 하지 않을 것입니다.
참고 : array.to_sentence
"1, 2, 3 및 4"스타일 출력을 제공합니다.
여기:
array.map {|str| "\"#{str}\""}.join(',')
여러 답변 #map
에서 #inspect
,, #join
. 이들 모두는 요소에 포함 된 쉼표 및 / 또는 문자열 구분 기호가 포함 된 가장자리 케이스에 대해 올바른 CSV 인코딩 세부 정보를 얻지 못합니다.
stdlib 클래스 CSV 를 사용 하여 직접 롤링 하는 것이 더 나은 아이디어 일 것입니다 .
irb> require 'csv'
=> true
irb> a = [10,'1,234','J.R. "Bob" Dobbs',3.14159]
=> [10, "1,234", "J.R. \"Bob\" Dobbs", 3.14159]
irb> puts a.to_csv
10,"1,234","J.R. ""Bob"" Dobbs",3.14159
이 인코딩이 포함 된 구분 기호를 신경 쓸 필요가 없거나 일부 내부 표현 전용 인 경우 map.join 솔루션은 충분하지만 CSV (쉼표로 구분 된 값)를 다음과 같이 예상하는 다른 프로그램과 교환 할 데이터를 생성하는 경우 실패합니다. 일반적으로 이해되는 표현.
가장 간단한 해결책은 내장 된 ".to_sentence"메소드를 사용하는 것입니다.
그래서
[ "fred", "john", "amy"]. to_sentence는 "fred, john 및 amy"를 출력합니다.
이것은 약간의 대안적인 솔루션이며, 특히 큰 따옴표로 묶인 문자열이있는 배열을 작은 따옴표로 묶인 목록으로 변환해야하는 경우에 유용합니다 (예 : SQL 쿼리).
"'#{["John Oliver", "Sam Tom"].join("','")}'"
...에
'John Oliver', 'Sam Tom'
출처 : https://alok-anand-ror.blogspot.com/2014/04/ruby-join-array-elements-with-single.html
'program tip' 카테고리의 다른 글
jquery로 onclick 이벤트를 변경하는 방법은 무엇입니까? (0) | 2020.11.19 |
---|---|
Android에서 ListView를 투명하게 만드는 방법은 무엇입니까? (0) | 2020.11.19 |
변수가 튜플, 문자열 또는 정수인지 확인하는 방법은 무엇입니까? (0) | 2020.11.19 |
Postgresql 어댑터 (pg) : 서버에 연결할 수 없습니다. (0) | 2020.11.19 |
유니 코드 문자열에서 악센트를 제거하는 쉬운 방법? (0) | 2020.11.19 |