我有多个字符串:
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
,并且地址看起来是这样的:"226 Virginia Ave, , , 08610, US"
最佳答案
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(', ')
这会将所有地址元素放在一个数组中,映射以将所有行更改为条带字符串,然后选择不为空的行,然后使用逗号和空格进行连接。
第一个元素是地址1和地址2的组合,以避免在门牌号后出现逗号。
关于arrays - 将多个变量合并为一个字符串并添加逗号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47901385/