我在Ruby中有一个数组:
arr = ["aba", "bab", "abb"]
我想用“c”替换所有“a”,然后用分号连接元素。
# Replace "a" with "c"
replaced_arr = arr.map {|element| element.sub("a", "c") }
# Join with a ";"
joined_string = replaced_arr.join(";")
# "cbc; bcb; cbb"
如何在Rails视图中执行此操作?
否则
<%= arr.map(|element| element.sub("a", "c")).join(";") %>
给了我错误syntax error, unexpected keyword_end, expecting ')'
答案 0 :(得分:4)
替代(和更短)的方式
<%= arr.join(";").gsub("a","c") %>
您遇到的错误也是因为语法错误。 map
接受一个块,所以它应该以{{1}}开头,即
{}
另外要注意使用arr.map{|element| element.sub("a", "c")}.join(";")
只会替换第一次出现的模式。您可能希望使用sub
全局替换所有匹配项。
答案 1 :(得分:1)
您应该使用{}
。
<%= arr.map{ |element| element.sub("a", "c") }.join(";") %>
答案 2 :(得分:1)
逻辑是完美的,只是一个小的语法错误。 map
接受阻止{}
,但您正在传递()
,请使用以下代码
<%= arr.map { |element| element.sub("a", "c") }.join(";") %>
希望这有帮助!
答案 3 :(得分:0)
您可以按如下方式使用它:
<%= arr.collect{|a| a.gsub("a","c")}.join(";") %>
答案 4 :(得分:0)
您也可以使用 gsub
arr.map { |x| x.gsub(/[a]/, "c")}.join(";")