我想要合并两个字符串:
str_1 = "A5 Coupé (B8)"
str_2 = "A5 Coupé 2,0 T FSI"
这当然可以通过调用
来完成str_1 + str_2
但是我想要一个包含' A5 Coupe'只有一次:
"A5 Coupé 2,0 T FSI (B8)"
如何实现?
答案 0 :(得分:1)
您可以使用空格作为分隔符拆分字符串,然后将唯一结果连接在一起。为了满足您的示例,str_2
需要先来。
[str_2, str_1].map {|str| str.split(' ') }.flatten.uniq.join(' ')
答案 1 :(得分:1)
您可以使用|
运算符来获取两个字符串中存在的单个单词的并集:
str_1 = "A5 Coupé (B8)"
str_2 = "A5 Coupé 2,0 T FSI"
puts ( str_2.split | str_1.split ).join(' ')
# => "A5 Coupé 2,0 T FSI (B8)"
对于任意数量的字符串,您可以这样做:
strings = [
"A5 Coupé (B8)",
"A5 Coupé 2,0 T FSI",
"A5 Coupé 2,0 Special Edition",
"A5 Coupé 2,0 Mini",
"A5 Coupé (B8)",
"A5 Coupé"
]
puts strings.reduce([]) { |words, str| words | str.split }.join(' ')
# => "A5 Coupé (B8) 2,0 T FSI Special Edition Mini"
.reduce
函数迭代数组,构建一个以空数组[]
开头的结果值。对于str
中的每个字符串strings
,它将通过当前值与每个str
的单个单词的并集替换当前构建的值(这是一个单词数组)(所以基本上,在数组中添加尚未出现的单词。)