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