これは本当に単純な正規表現かもしれませんが、Google で検索するのが難しいことが証明されている問題の 1 つです。
サードパーティのシステムからエラー コードが返ってきました。それらは次の形式になっているはずです。
ZZZ##
ここで、Z はアルファ、# は数値です。それらは 0 で埋められるはずですが、時々戻ってくることがわかりました
ZZZ#
0 パディングなし。
文字列をハッシュのインデックスとして使用できるように、0 パディングを追加する方法を知っている人はいますか?
これは本当に単純な正規表現かもしれませんが、Google で検索するのが難しいことが証明されている問題の 1 つです。
サードパーティのシステムからエラー コードが返ってきました。それらは次の形式になっているはずです。
ZZZ##
ここで、Z はアルファ、# は数値です。それらは 0 で埋められるはずですが、時々戻ってくることがわかりました
ZZZ#
0 パディングなし。
文字列をハッシュのインデックスとして使用できるように、0 パディングを追加する方法を知っている人はいますか?
これが私の見解です:
def pad str
number = str.scan(/\d+/).first
str[number] = "%02d" % number.to_i
str
end
6.times do |n|
puts pad "ZZZ#{7 + n}"
end
# >> ZZZ07
# >> ZZZ08
# >> ZZZ09
# >> ZZZ10
# >> ZZZ11
# >> ZZZ12
読む:
fixed = str.gsub /([a-z]{3})(\d)(?=\D|\z)/i, '\10\2'
それは言います:
\13 文字 ( )、ゼロ ( 0)、数字 ( \2)に置き換えます。任意の長さにパディングするには、次のことができます。
# Pad to six digits
fixed = str.gsub /([a-z]{3})(\d+)/i do
"%s%06d" % [ $1, $2.to_i ]
end
これが私のものです:
"ZZZ7".gsub(/\d+/){|x| "%02d" % x}
=> "ZZZ07"
これを行うにはおそらく百万の方法がありますが、ここに別の外観があります。
str.gsub!(/ [0-9] + /、 '0 \ 0')if str.length <5