代码之家  ›  专栏  ›  技术社区  ›  Sachin R

Ruby数组到字符串的转换

  •  154
  • Sachin R  · 技术社区  · 14 年前

    我有一个红宝石数组 ['12','34','35','231'] .

    我想把它转换成 '12','34','35','231' .

    我该怎么做?

    12 回复  |  直到 6 年前
        1
  •  282
  •   Varun Garg    6 年前

    我将和以下人一起玩:

    ['12','34','35','231'].join(', ')
    

    编辑:

    "'#{['12','34','35','231'].join("', '")}'"
    

    添加第一个和最后一个单引号的字符串插值:p

        2
  •  41
  •   Shadwell    14 年前
    > a = ['12','34','35','231']
    > a.map { |i| "'" + i.to_s + "'" }.join(",")
    => "'12','34','35','231'"
    
        3
  •  26
  •   ranjith kumar vengala    12 年前

    试试这个代码 ['12','34','35','231']*","

    会给你结果的 “12、34、3523”

    我希望这是你的结果,让我知道

        4
  •  10
  •   wildcountry    13 年前
    array.map{ |i|  %Q('#{i}') }.join(',')
    
        5
  •  9
  •   sth Alien    11 年前
    string_arr.map(&:inspect).join(',') # or other separator
    
        6
  •  7
  •   hirolau    8 年前

    我发现这是一种可读性和通俗易懂的方式:

    add_quotes =- > x{"'#{x}'"}
    
    p  ['12','34','35','231'].map(&add_quotes).join(',') => "'12','34','35','231'"
    
        7
  •  5
  •   John La Rooy    14 年前
    > puts "'"+['12','34','35','231']*"','"+"'"
    '12','34','35','231'
    
    > puts ['12','34','35','231'].inspect[1...-1].gsub('"',"'")
    '12', '34', '35', '231'
    
        8
  •  4
  •   Bernard    14 年前

    还有另一种变化

    a = ['12','34','35','231']
    a.to_s.gsub(/\"/, '\'').gsub(/[\[\]]/, '')
    
        9
  •  3
  •   NinjaCat    14 年前
    irb(main)> varA
    => {0=>["12", "34", "35", "231"]}
    irb(main)> varA = Hash[*ex.collect{|a,b| [a,b.join(",")]}.flatten]
    ...
    
        10
  •  2
  •   ngoozeff    14 年前
    irb(main):027:0> puts ['12','34','35','231'].inspect.to_s[1..-2].gsub('"', "'")
    '12', '34', '35', '231'
    => nil
    
        11
  •  1
  •   Peter Toth    7 年前

    您可以使用一些函数式编程方法,转换数据:

    ['12','34','35','231'].map{|i| "'#{i}'"}.join(",")

        12
  •  -5
  •   christian    14 年前

    array.inspect.inspect.gsub(/\[|\]/, "") 能做到这一点吗?