【问题标题】:Better alternative to join() and split() in rubyruby 中 join() 和 split() 的更好替代方案
【发布时间】:2014-10-16 14:02:42
【问题描述】:

我有一个字符串数组。

看起来像这样:

big_array = Array.new
big_array[0] = ["aib","ulster","anglo","hsbc"]
big_array[1] = ["ulster","hdfc","citibank"]
big_array[2] = ["aib", "citibank"]

现在,我想从这里创建另一个包含银行名称的数组。 我知道如何做到这一点的唯一方法是。

big_array.join(" ").split(" ").uniq

现在,这适用于少量数据。但是如果 big_array 的索引达到 1000 秒会怎样。这似乎不是最好的方法。有没有更好的方法来实现这一点?

附:我刚刚举了一个例子来说明我正在尝试做的事情。不是实际的代码。只是想要一个更优雅的解决方案。

【问题讨论】:

  • here 和 here 提出了类似的问题。这是比赛吗?
  • here 是另一个。
  • @Stefan 通过识别三个类似的问题抢占先机,但 Cary 很快就结束了,已经快速连续添加了 this 和 this...
  • 看起来我班上的大多数人都试图从这里得到他们的解决方案。在我的辩护中,我已经提交了作业,然后才在这里提问。只是好奇什么可能是一个好的解决方案。
  • 欢迎来到 SO,请不要因为我以你为代价的轻率尝试而推迟。你很快就会掌握它的窍门。有空的时候看看这个faq。

标签: ruby arrays join


【解决方案1】:

你可以使用Array#flatten:

big_array = Array.new
big_array[0] = ["aib","ulster","anglo","hsbc"]
big_array[1] = ["ulster","hdfc","citibank"]
big_array[2] = ["aib", "citibank"]
big_array.flatten.uniq
# => ["aib", "ulster", "anglo", "hsbc", "hdfc", "citibank"]

【讨论】:

    【解决方案2】:

    或者更简洁:

    big_array = []
    big_array << ["aib","ulster","anglo","hsbc"]
    big_array << ["ulster","hdfc","citibank"]
    big_array << ["aib", "citibank"]
    big_array.flatten.uniq
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-05
      • 1970-01-01
      • 2016-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-08
      相关资源
      最近更新 更多