Ruby将字符串追加到数组中的每个元素

3

我正在开发一个与Ruby API相关的分析工具。在进行调用时,我将参数发送为:

dimensions = ["ga:hostName", "pagePath"]
metrics = ["pageValue", "ga:pageviews"]
.call_analytics(dimensions, metrics)

即使用户在传递参数时未输入“ga:”,代码也应在参数中附加“ga:”。
我是这样做的。
dimensions = dimensions.map{|a| ("ga:" + a.split(":").last).split}.flatten
metrics = metrics.map{|a| ("ga:" + a.split(":").last).split}.flatten

有更好的方法吗?


last)之后的split是用来干嘛的? - sawa
@sawa:我想将它转换回数组。这就是我使用split的原因。 - Kumar
1个回答

8
["ga:hostName", "pagePath"]
.map{|s| s.sub(/\A(?!ga:)/, "ga:")}
#=> ["ga:hostName", "ga:pagePath"]

["pageValue", "ga:pageviews"]
.map{|s| s.sub(/\A(?!ga:)/, "ga:")}
#=> ["ga:pageValue", "ga:pageviews"]

或者

["ga:hostName", "pagePath"]
.map{|s| s.start_with?("ga:") ? s : s.prepend("ga:")}
#=> ["ga:hostName", "ga:pagePath"]

["pageValue", "ga:pageviews"]
.map{|s| s.start_with?("ga:") ? s : s.prepend("ga:")}
#=> ["ga:pageValue", "ga:pageviews"]

我更喜欢使用 map! - Rahul
1
这将字符串附加到“original”数组。如果我想附加一个字符串,并将结果存储到新数组中,并保留原始数组,该怎么办? - Chris F

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接