如何为数组中的所有元素添加引号

时间:2013-10-19 12:43:42

标签: ruby-on-rails ruby arrays

我在rails中的ruby代码:

 WebFontConfig = {
          google: { families: [<%= @text %>] }
        }

给我这样的结果:

 WebFontConfig = {
          google: { families: [Aclonica,Aclonica,Acme,Acme,Aclonica] }
        }

但我需要这样的结果:

  WebFontConfig = {
              google: { families: ['Aclonica','Acme'] }
            }

所以我需要广告周围的文字,只采取独特的回忆。我该怎么办?

2 个答案:

答案 0 :(得分:1)

我猜这个样本是erb模板。

@text在控制器中定义为@text = 'Aclonica,Aclonica,Acme,Acme,Aclonica'

在这种情况下,您可以使用下一个简单的正则表达式:

WebFontConfig = {
  google: { families: [<%= @text.split(',').uniq.join(',').gsub(/[^,]+/, "'\\0'").html_safe %>] }
}

答案 1 :(得分:1)

这是您可以使用的方法。

input = "Aclonica,Aclonica,Acme,Acme,Aclonica"

def format(text_string = "")
  text_string
    .split(",")
    .uniq
    .map { |string| "'" + string + "'" }
    .join(", ")
end

format(input) #=> "'Aclonica', 'Acme'"