【问题标题】:Ruby: Get from string "parts of the same string" - this between thatRuby:从字符串中获取“同一字符串的部分” - 这之间
【发布时间】:2012-02-17 17:47:47
【问题描述】:

我有一个字符串数组

["2 192.168.1.101 10000",56 192.168.1.101 10001","3 192.168.1.101 10002","1 192.168.1.101 10003"]

我想获取部分或每个字符串项并创建单独的数组 类似:

["2","56","3","1"] , ["192.168.1.101","192.168.1.101","192.168.1.101","192.168.1.101"] and
["10000","10001","10002","10003"]

我的问题是如何获得这些字符?

对于第一个数组,是不是类似于从第一个到""空格得到

我希望我的问题得到很好的理解并且我得到了一些答复 提前谢谢你!

【问题讨论】:

    标签: ruby-on-rails ruby string rubygems string-matching


    【解决方案1】:

    比杰夫的回答短一点:

    data = ["2 192.168.1.101 10000","56 192.168.1.101 10001","3 192.168.1.101 10002","1 192.168.1.101 10003"]
    data.map(&:split).transpose
    

    String#split 默认在空格上拆分,当您只需要为每个数组条目调用一个方法时,您可以使用较短的map { |x| x.do_something } 而不是map(&:do_something)

    【讨论】:

    • 我忽略了String#split 使用空格作为分隔符。好一个!比你的版本更短的版本将是一个很大的挑战......
    【解决方案2】:
    data = ["2 192.168.1.101 10000","56 192.168.1.101 10001","3 192.168.1.101 10002","1 192.168.1.101 10003"]
    data.collect {|value| value.split(" ")}.transpose
    

    【讨论】:

    • 好答案,但也许您可以先将数组分配给一个变量,这样您的答案就不会滚动显示?
    【解决方案3】:

    快速而详细的版本:

    data = ["2 192.168.1.101 10000","56 192.168.1.101 10001","3 192.168.1.101 10002","1 192.168.1.101 10003"]
    result = [[],[],[]]
    data.each do |element|
      parts = element.split
      result[0] << parts[0]
      result[1] << parts[1]
      result[2] << parts[2]
    end
    
    puts result.inspect
    

    【讨论】:

      猜你喜欢
      • 2018-04-06
      • 1970-01-01
      • 1970-01-01
      • 2021-01-13
      • 1970-01-01
      • 2017-06-19
      • 1970-01-01
      • 1970-01-01
      • 2012-07-23
      相关资源
      最近更新 更多