2017-12-20 1 views
1

を追加します。次のようには、単一の文字列に複数の変数を結合して、私は複数の文字列を持っているコンマ

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

私は、カンマで互いから分離された単一の文字列の中にそれらを結合しようとしています:

"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または空である、それはまだ余分 ,が表示され、アドレスは次のように見て終わる:これは、AN内のすべてのアドレスの要素を置く

"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と2の組み合わせです。

+0

多くのおかげで、これは 'address_'のどれかが' nil'であれば動作しますが、空の場合には空ではありません。余分なカンマが表示されます – Saadia

+0

OK、修正された解決策です。すべての空の文字列を取り除きます。 – 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

関連する問題