質問

私はOPE IDを使用しています。 1つのファイルには、2つの後続のゼロがあります。 [998700, 1001900]. 。他のファイルには、1つまたは2つの主要なゼロがあり、たとえば6の合計長さがあります。 [009987, 010019]. 。すべてのOPE ID(両方のファイル内)を、正確に2つの主要なゼロを備えた8桁の文字列に変換し、最後に多くのゼロを8桁の長さにしたいと考えています。

役に立ちましたか?

解決

これを試して:

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

=> ["00123123", "00779340", "00934220", "001231234", "00123330"]

他のヒント

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

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.

私は非常に確信しています、私は説明をまったく正しく受け取ったことに注意してください。コメントを確認してください。あなたが探していたものではない場合に備えて修正してください。

@detunized&@nimblegorillaによって与えられた答えの助けを借りて、私は次のように思いつきました。

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

私が説明した最初の形式を(常に2つの後続のゼロを使用して)2番目に等しくするために。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top