【问题标题】:Ruby array to string conversionRuby 数组到字符串的转换
【发布时间】:2011-03-30 20:55:59
【问题描述】:

我有一个像 ['12','34','35','231'] 这样的 ruby​​ 数组。

我想把它转换成'12','34','35','231'这样的字符串。

我该怎么做?

【问题讨论】:

    标签: ruby arrays string


    【解决方案1】:

    我会和他一起玩:

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

    编辑:

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

    一些字符串插值来添加第一个和最后一个单引号:P

    【讨论】:

    • 结果为“12,34,35,231”。结果中缺少单引号。
    • 好的添加了一些字符串插值来添加第一个和最后一个单引号:P
    • 如何恢复?
    • 你是什么意思revert @zx1986
    • @corroded 对不起,我明白了。 JSON.parse("[12, 39, 100]") 将返回一个数组。
    【解决方案2】:
    > a = ['12','34','35','231']
    > a.map { |i| "'" + i.to_s + "'" }.join(",")
    => "'12','34','35','231'"
    

    【讨论】:

    • 也许改用"'#{i}'"
    • 认为不需要地图。加入应该可以解决问题。见下文
    【解决方案3】:

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

    会给你结果“12,34,35,231”

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

    【讨论】:

    • 我认为 OP 也需要有单引号。
    【解决方案4】:
    array.map{ |i|  %Q('#{i}') }.join(',')
    

    【讨论】:

    • 引用 Mladen 的话,“也许 [使用] "'#{i}'" 代替。”
    • 这是正确的做法,应该是公认的答案。
    【解决方案5】:
    string_arr.map(&:inspect).join(',') # or other separator
    

    【讨论】:

    • 这不会产生正确的输出 - 值需要用单引号括起来。如果这是所需的输出,那么 string_arr.join(",") 将是更好的选择。
    • 肖恩,你错了。您是否至少运行过一次表达式??
    • 还是错了。它导致数组条目周围出现双引号,而不是单引号。另外,它依赖于对“inspect()”打印数据格式的假设,这使得它很脆弱。
    • ['1','2','3'].map { |o| "\'#{o}\'" }.join(',')
    【解决方案6】:

    我觉得这种方式可读性强,而且很红:

    add_quotes =- > x{"'#{x}'"}
    
    p  ['12','34','35','231'].map(&add_quotes).join(',') => "'12','34','35','231'"
    

    【讨论】:

      【解决方案7】:
      > puts "'"+['12','34','35','231']*"','"+"'"
      '12','34','35','231'
      
      > puts ['12','34','35','231'].inspect[1...-1].gsub('"',"'")
      '12', '34', '35', '231'
      

      【讨论】:

        【解决方案8】:

        还有另一种变化

        a = ['12','34','35','231']
        a.to_s.gsub(/\"/, '\'').gsub(/[\[\]]/, '')
        

        【讨论】:

          【解决方案9】:
          irb(main)> varA
          => {0=>["12", "34", "35", "231"]}
          irb(main)> varA = Hash[*ex.collect{|a,b| [a,b.join(",")]}.flatten]
          ...
          

          【讨论】:

            【解决方案10】:
            irb(main):027:0> puts ['12','34','35','231'].inspect.to_s[1..-2].gsub('"', "'")
            '12', '34', '35', '231'
            => nil
            

            【讨论】:

              【解决方案11】:

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

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

              【讨论】:

                【解决方案12】:

                假设你的数组:

                arr=["1","2","3","4"]
                

                数组转字符串方法:

                Array_name.join(",")
                

                例子:

                arr.join(",")
                

                结果:

                "'1','2','3','4'"
                

                【讨论】:

                  【解决方案13】:

                  array.inspect.inspect.gsub(/\[|\]/, "") 可以解决问题

                  【讨论】:

                    猜你喜欢
                    • 2014-10-16
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2017-10-27
                    • 2015-02-21
                    相关资源
                    最近更新 更多