我有多个字符串:

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/

10-12 00:04
查看更多