-9

この配列がある場合:

["1","2","3,a","4,b"]

どうすればこの配列を取得できますか?

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

5 に答える 5

9

すべての整数があると仮定すると、(そうでない場合は、アイデアが得られると思います:))

["1","2","3,a","4,b"].collect {|i| i.to_i}
于 2013-03-21T06:01:26.633 に答える
3

次のような配列を使用します。

ary = ["1","2","3,a","4,b"]

私は使用します:

ary.map{ |s| s[/\A(\d+)/, 1] }

結果は次のとおりです。

[
    [0] "1",
    [1]「2」、
    [2]「3」、
    [3]「4」
]

文字列の先頭にある数値を検索し、それらを新しい配列で返すだけです。

于 2013-03-21T07:34:01.620 に答える
1

試す:

["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"]
于 2013-03-21T07:39:46.953 に答える
0

これも機能するはずです...

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"]
于 2013-03-21T05:59:17.910 に答える
-2

この削除オプションを試してください:

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

更新されたコード(各ループの使用 - Tin Man のおかげ)

irb(main):005:0>  a = ["101","2zd","3,a","10,ab"]
=> ["101", "2zd", "3,a", "10,ab"]
irb(main):006:0> b = []
=> []
irb(main):007:0> a.each do |t|
irb(main):008:1* b << t.delete("^0-9")
irb(main):009:1> end
=> ["101", "2zd", "3,a", "10,ab"]
irb(main):010:0> puts b
101
2
3
10
=> nil
于 2013-03-21T05:53:15.950 に答える