在 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
我试图在我的 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