Groovy如何移除百分号提取整数实现百分比值大小比较
Groovy 百分比字符串转数值比较方案
现有场景
你当前持有存储百分比字符串的列表:
def list = ['100%', '25%', '80%', '1%', '100%', '12%', '100%', '75%', '20%', '100%']
原本计划通过如下遍历逻辑做阈值判断,但因为列表元素是带%的字符串,无法直接和整数90做数值比较:
for (i in list){ if (i < 90){ println 'failed' } }
解决方法
核心逻辑就是两步:移除每个元素里的百分号、把处理后的字符串转成整数,再做比较即可,两种常用实现按需选择:
- 最小改动方案:遍历过程中实时转换,不修改原列表
for (str in list) { // 移除百分号后转整数,也可以写成 (str - '%').toInteger(),Groovy 原生支持字符串减法移除指定字符 def val = str.replace('%', '').toInteger() if (val < 90) { println 'failed' } }
- 预转换方案:提前把整个列表转成整数列表,适合后续还要多次使用数值做计算的场景
// 一次性完成全列表的类型转换 def intList = list.collect { it.replace('%', '').toInteger() } // 后续遍历直接做数值比较即可 for (val in intList) { if (val < 90) { println 'failed' } }
注意:不要直接拿字符串类型的百分比值和整数做比较,弱类型语言下字符串和数值的比较规则不符合数值大小判断逻辑,会得到错误结果。
内容的提问来源于stack exchange,提问作者jacaaa
相关产品推荐
相关产品推荐

