1

私はOPE IDを扱っています。1 つのファイルには、末尾に 2 つのゼロが付いたものがあります (例: [998700, 1001900]. もう 1 つのファイルには、先頭に 1 つまたは 2 つの 0 が付いた、合計 6 つの長さのファイルがあります。たとえば、[009987, 010019]. すべての OPE ID (両方のファイル内) を 8 桁の文字列に変換したいと考えています。先頭に 2 つのゼロがあり、最後に多くのゼロがあり、8 桁の長さになります。

4

3 に答える 3

3

これを試して:

a = [ "00123123", "077934", "93422", "1231234", "12333" ]
a.map { |n| n.gsub(/^0*/, '00').ljust(8, '0') }

=> ["00123123", "00779340", "00934220", "001231234", "00123330"]
于 2010-12-06T20:03:36.127 に答える
1

@detunized と @nimblegorilla からの回答を参考にして、次のことを思いつきました。

"998700"[0..-3].rjust(6, '0').to_sym

私が説明した最初の形式 (常に 2 つの末尾のゼロを含む) を 2 番目の形式に等しくします。

于 2010-12-06T22:48:04.413 に答える
1

データを解析して文字列として保存している場合、たとえば次のようにすることができます。

n = ["998700", "1001900", "009987", "0010019"]
puts n.map { |i|
    i =~ /^0*([0-9]+?)0*$/
    "00" + $1 + "0" * [0, 6 - $1.length].max
}

出力:

00998700
00100190
00998700
00100190

codepad のこの例。

ただし、説明が正確に正しいことは確かです。コメントを確認してください。探していたものと正確に一致しない場合は修正します。

于 2010-12-06T19:36:56.813 に答える