2017-12-20 8 views
1

을 단일 문자열로 여러 변수를 결합하고 추가내가 여러 문자열을 쉼표

"226 Virginia Ave, Trenton, NJ, 08610, US" 

변수를 문자열로 결합하고 쉼표로 구분하고, 변수가 누락 된 경우 추가 쉼표를 표시하지 않을 수 있습니까?

(address_1.to_s + ' ' + address_2.to_s + ' ' + address_city.to_s + ' ' + address_state.to_s + ' ' + address_postal_code.to_s + ' ' + address_country.to_s).squish 

이이 같은 출력을 제공합니다 : 나는 공간 + ' ' +를 추가하고 있기 때문에

"226 Virginia Ave Trenton NJ 08610 US" 

이 발생

나는 이런 짓을. 내가 + ', ' +을 할 경우, 경우에 address_의는 nil 나 비어, 그것은 여전히 ​​추가 ,를 표시하며, 주소는 다음과 같이 찾고 끝 :

"226 Virginia Ave, , , 08610, US" 
+0

배열에 넣고'ary.compact.join (',')'를 사용하십시오. 컴팩트는 누락 된 항목을 제거하고 나머지는 지정된 구분 기호로 결합합니다. –

답변

2
address_1 = '226' 
address_2 = 'Virginia Ave' 
address_city = 'Trenton' 
address_state = 'NJ' 
address_country = 'US' 
address_postal_code = '08610' 

["#{address_1} #{address_2}", address_city, address_state, address_country, address_postal_code].map{|line| line.to_s.strip}.select{|line| !line.empty?}.join(', ') 

이는 모든 주소 요소를 넣습니다 배열을 사용하면 모든 행을 스트립 된 문자열로 바꾸고 비어 있지 않은 행을 선택한 다음 쉼표와 공백을 사용하여 조인 할 수 있습니다.

첫 번째 요소는 집 번호 뒤에 쉼표가 없도록 결합 된 address_1 및 address 2입니다.

+0

'address_'가'nil'이라면 고맙겠지 만 비어있는 경우에는 쉼표가 보입니다. – Saadia

+0

좋아요, 수정 된 해결책은 모든 요소를 ​​문자열로 바꾸지 만 모든 빈 문자열을 제거합니다. – SteveTurczyn

+0

많은 도움을 주셔서 감사합니다 – Saadia

1

어레이 압축을 사용해보십시오. 이것은 귀하의 문제를 해결할 수 있습니다.

address_arr = [address_1, address_2, address_city, address_state, address_country, address_postal_code] 
no_empty_address = address_arr.reject{ |c| c.empty? } 
no_empty_address.compact.join(', ') 
+0

'address_' 중 하나라도'nil'이지만 공백 인 경우 빈 경우에도 여전히 쉼표가 표시됩니다 – Saadia

+0

코드를 업데이트했습니다. 다시 시도하십시오. –

+0

많은 도움에 감사드립니다. – Saadia