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

Kum*_*mar 2 ruby google-analytics ruby-on-rails ruby-on-rails-3.2

我正在研究分析ruby api客户端.打电话的时候我发送的是params

dimensions = ["ga:hostName", "pagePath"]
metrics = ["pageValue", "ga:pageviews"]
.call_analytics(dimensions, metrics)
Run Code Online (Sandbox Code Playgroud)

即使用户在传递参数时没有输入"ga:",代码也应该在参数中附加"ga:".

我这样做了.

dimensions = dimensions.map{|a| ("ga:" + a.split(":").last).split}.flatten
metrics = metrics.map{|a| ("ga:" + a.split(":").last).split}.flatten
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法呢?

saw*_*awa 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"]
Run Code Online (Sandbox Code Playgroud)

要么

["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"]
Run Code Online (Sandbox Code Playgroud)