在 ReadyApi 中删除 groovy 中的最后一个零数字

Remove last zero digits in groovy in ReadyApi

我试图在我的 ReadyApi 测试中删除 groovy 中的最后一个零数字。

例如,

273.900 需要为 273.9

17.580 需要为 17.58

116.000 需要是 116

我有以下内容,但这还不完整:

def qTY = context.expand( '${Stock DataSource#QTY}' )
qTY = qTY.replaceAll('.000', '')
qTY = qTY.replaceAll('00', '')
return qTY

谁能帮我把这个写得更有效率? 谢谢

应该这样做:

def elideZeros(s) {
  s.reverse().dropWhile { it in ['0', '.'] }.reverse()
}

assert elideZeros('273.900') == '273.9'
assert elideZeros('17.580')  == '17.58'
assert elideZeros('116.000') == '116'

您可以为此使用相对简单的正则表达式:

'273.002000'.replaceFirst( /((?<=(\..{0,20}))0+)$/, '' ).replaceFirst( /\.$/, '' )

打印

273.002