【问题标题】:How to convert a string to an array in Ruby [closed]如何在Ruby中将字符串转换为数组[关闭]
【发布时间】:2018-06-20 16:11:57
【问题描述】:

我有一个字符串,看起来像一个数组"[12,34,35,231]",但这只是一个在开头和结尾都包含方括号的字符串。

我需要分隔字符串看起来像数组和其他。

为此,我想将字符串转换为数组'12','34','35','231',并在转换后使用如下条件:

if array.is_a? Array
...
else
...
end

谁能告诉我如何以正确的方式进行转换?

【问题讨论】:

  • string[1..-2].split(',')
  • 那个字符串是从哪里来的?
  • @SagarPandya 是的,你是对的,它复制了那个链接。谢谢大家,求解答。我想删除我的问题,但由于技术原因我不能这样做。

标签: arrays ruby string


【解决方案1】:

您可以使用 json 将其转换为数组。

class T
  require 'json'
  def array_detect(array_string)
    begin
      json = JSON.parse array_string
      if json.is_a? Array
        # is an array
      else
        # not an array
      end
    rescue JSON::ParserError => e
      puts e.message
      # not a valid json string
    end
  end
end

【讨论】:

    【解决方案2】:
    "[12,34,35,231]"[1...-1].split(',')
    

    【讨论】:

    • each(&:to_s) 没有区别。
    • @SagarPandya 对。我的错,谢谢
    【解决方案3】:
    str = "[12,34,35,231]"
    
    str.split(/\D+/).reject(&:empty?)
     => ["12", "34", "35", "231"]
    
    # If you want the elements as numbers instead of strings, do:
    str.split(/\D+/).reject(&:empty?).map(&:to_i)
     => [12, 34, 35, 231]
    

    【讨论】:

    • 虽然此代码可以回答问题,但提供有关 如何为什么 解决问题的附加上下文将提高​​答案的长期价值。
    【解决方案4】:

    不是转换,是解析。

    输入字符串看起来像JSON。如果是 JSON 则使用JSON Ruby 模块对其进行解码:

    require 'json'
    arr = JSON.parse("[12,34,35,231]")
    

    arr 是一个数字数组:

    p arr
    # [12, 34, 35, 231]
    

    如果您需要将值作为字符串,您可以使用方法to_s 将它们转换为字符串:

    arr = arr.map(&:to_s)
    p arr
    # ["12", "34", "35", "231"]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-09
      • 2021-05-24
      • 1970-01-01
      • 2015-07-25
      相关资源
      最近更新 更多