-2

以下のような値を持つルビーの配列があります。

arr

Value 1 : tb-5-atf, ac-23 
Value 2 : tb-5-atf, ac-5498
Value 3 : tb-5-atf, ac-236

この中から、最後の '-' の後の数字、つまり 23、5498、236 のみを抽出したいと考えています。

4

5 に答える 5

1

私は怠け者:

[
  'Value 1 : tb-5-atf, ac-23',
  'Value 2 : tb-5-atf, ac-5498',
  'Value 3 : tb-5-atf, ac-236'
].map{ |r| r[/-(\d+)$/, 1] }

どちらが返されますか:

[
    [0] "23",
    [1] "5498",
    [2] "236"
]

整数値が必要な場合:

[
  'Value 1 : tb-5-atf, ac-23',
  'Value 2 : tb-5-atf, ac-5498',
  'Value 3 : tb-5-atf, ac-236'
].map{ |r| r[/-(\d+)$/, 1].to_i }

戻る:

[
    [0] 23,
    [1] 5498、
    [2] 236
]

split('-')またはを使用してこれを行うことは可能ですがscan、一時的な配列が生成されてから破棄され、CPU サイクルが浪費されるか、配列を解明しようとするためコードが単純ではなくなります。

于 2013-04-20T04:50:49.630 に答える
1
arr.map {|el| el.split('-').last}
于 2013-04-19T22:15:09.143 に答える
0

これは非常に簡単だと思いますが、ルビ文字列について少しグーグルで検索する必要がありました。ただし、このようなものが必要になります

arr[i].split("-").last.to_i

私はirbでこれを試しました

1.9.3p194 :003 > "tb-5-atf, ac-23".split("-").last.to_i
=> 23
于 2013-04-19T22:15:23.353 に答える