5

10 進数から末尾のゼロを削除する正規表現を探しています。次の結果が返されます。

0.0002300 -> 0.00023
10.002300 -> 10.0023
100.0     -> 100
1000      -> 1000
0.0       -> 0
0         -> 0

基本的に、小数部分が 0 の場合は、末尾のゼロと末尾の小数点を削除する必要があります。また、それが値の場合は 0 を返す必要があります。何かご意見は?ありがとう。

4

2 に答える 2

12

ちょうど別の方法

["100.0","0.00223000"].map{|x|"%g"%x}
于 2011-02-06T13:37:17.593 に答える
8

正規表現を試してください:

(?:(\..*[^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

"%g" % tstまたは、単に末尾のゼロを削除することもできます:

tests = ['0.0002300', '10.002300', '100.0', '1000', '0.0', '0']
tests.each { |tst|
  s = "%g" % tst
  print tst, " -> ", s, "\n"
}

これは同じ出力を生成します。

于 2011-02-06T11:38:43.020 に答える