Ruby 拆分数组并获取所需元素

Ruby 拆分数组并获取所需元素,ruby,Ruby,如果我有这个数组: [“1”、“2”、“3、a”、“4、b”] 如何从中获取此阵列 ["1","2","3","4"]. 尝试此删除选项: irb(main):014:0> a = ["101","2zd","3,a","10,ab"] => ["101", "2zd", "3,a", "10,ab"] irb(main):015:0> count = a.count irb(main):016:0> for i in 0..count irb(main):017:1

如果我有这个数组:

[“1”、“2”、“3、a”、“4、b”]

如何从中获取此阵列

["1","2","3","4"].

尝试此删除选项:

irb(main):014:0> a = ["101","2zd","3,a","10,ab"]
=> ["101", "2zd", "3,a", "10,ab"]
irb(main):015:0> count = a.count
irb(main):016:0> for i in 0..count 
irb(main):017:1> puts a[i].delete("^0-9")
irb(main):018:1> end
101
2
3
10
更新代码(使用每个循环-感谢锡人)

irb(main):005:0>a=[“101”,“2zd”,“3,a”,“10,ab”]
=>[“101”,“2zd”,“3,a”,“10,ab”]
irb(主):006:0>b=[]
=> []
irb(主要):007:0>a.每个都有|
irb(主):008:1*b结束
=>[“101”,“2zd”,“3,a”,“10,ab”]
irb(主):010:0>b
101
2.
3.
10
=>零

这也应该有效

array=["1","2","3,a","4,b"]
  for i in 0..array.length()-1
    if array[i].include?(",")
      ab=array[i].split(",")
      array[i]=ab[0]
    end

  end
print array #["1","2","3","4"]

假设你有所有的整数,(如果没有,我想你明白了:)

使用如下数组:

ary = ["1","2","3,a","4,b"]
我会使用:

ary.map{ |s| s[/\A(\d+)/, 1] }
其结果是:

[ [0] "1", [1] "2", [2] "3", [3] "4" ] [ [0] "1", [1] "2", [2] "3", [3] "4" ] 它只需在字符串的开头找到数字,并将其返回到新数组中。

试试:

["1","2","3,a","4,b"].map(&:to_i)
=> [1, 2, 3, 4]
获取字符串数组的步骤

["1","2","3,a","4,b"].map(&:to_i).map(&:to_s)
=> ["1", "2", "3", "4"]

先试试看,我们会帮你的。如果你不想花时间,我们为什么要花时间呢?这是一个很好的问题,Aurick
for
在Ruby中并不惯用。考虑使用<代码>每个或<代码> MAP>代码>。谢谢你的建议,请看一下YES,同样的事情。+ 1。这一点的唯一答案实际上看起来像Ruby代码。@theTinMan,谢谢:)
i.to\u i.to\u s
会更准确,因为作者想要的是字符串数组,而不是整数数组。但是无论如何,这段代码比公认答案中的java代码要好得多。或者只是
.collect(&:to_i)
+1哇,甚至更干净(这就是为什么我喜欢ruby:))可能是最好的,但是示例输入中没有任何东西真正暗示\A是必要的。也许只是/\d+/它在那里锚定速度和强制精度。这是可行的,但几乎是不受约束的。我想更糟糕的是使用.index而不是.include?
["1","2","3,a","4,b"].map(&:to_i)
=> [1, 2, 3, 4]
["1","2","3,a","4,b"].map(&:to_i).map(&:to_s)
=> ["1", "2", "3", "4"]