以下のような値を持つルビーの配列があります。
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 のみを抽出したいと考えています。
以下のような値を持つルビーの配列があります。
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 のみを抽出したいと考えています。
私は怠け者:
[
'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 サイクルが浪費されるか、配列を解明しようとするためコードが単純ではなくなります。
arr.map {|el| el.split('-').last}
これは非常に簡単だと思いますが、ルビ文字列について少しグーグルで検索する必要がありました。ただし、このようなものが必要になります
arr[i].split("-").last.to_i
私はirbでこれを試しました
1.9.3p194 :003 > "tb-5-atf, ac-23".split("-").last.to_i
=> 23