10進数の末尾のゼロを削除するための正規表現を探しています。これは、以下の結果を返す必要があり:末尾のゼロを丸めるRuby Regex
0.0002300 -> 0.00023
10.002300 -> 10.0023
100.0 -> 100
1000 -> 1000
0.0 -> 0
0 -> 0
基本的には、後続ゼロを削除し、小数部は、それが値だ場合にも0を返す必要が0である場合は小数点を後続すべきです。何かご意見は?ありがとう。
10進数の末尾のゼロを削除するための正規表現を探しています。これは、以下の結果を返す必要があり:末尾のゼロを丸めるRuby Regex
0.0002300 -> 0.00023
10.002300 -> 10.0023
100.0 -> 100
1000 -> 1000
0.0 -> 0
0 -> 0
基本的には、後続ゼロを削除し、小数部は、それが値だ場合にも0を返す必要が0である場合は小数点を後続すべきです。何かご意見は?ありがとう。
正規表現を試してみてください:
(?:(\..*[^0])0+|\.0+)$
とに置き換えます
\1
デモ:
tests = ['0.0002300', '10.002300', '100.0', '1000', '0.0', '0']
tests.each { |tst|
print tst, " -> ", tst.sub(/(?:(\..*[^0])0+|\.0+)$/, '\1'), "\n"
}
生成:
0.0002300 -> 0.00023
10.002300 -> 10.0023
100.0 -> 100
1000 -> 1000
0.0 -> 0
0 -> 0
を
tests = ['0.0002300', '10.002300', '100.0', '1000', '0.0', '0']
tests.each { |tst|
s = "%g" % tst
print tst, " -> ", s, "\n"
}
同じ出力を生成します:
それとも、単に末尾のゼロを削除するにはを行うことができます。
もうひとつの方法
["100.0","0.00223000"].map{|x|"%g"%x}
ありがとう、これは素晴らしいです!あなたのソリューション "%g"%xはわずか6文字です! – antinome
私は、それが必要以上に多くの複雑だが、それはそう+1をうまくいくと思います。 –
:)、私は完全に@マークに同意します。私は少しぼやけたが、ショートカットを見ることはできません... –
今、もっと簡単な解決法を提案することはできません....私はあきらめます。 :) –