Karate框架中如何移除数组多余字符并转换为纯数值数组
Karate脚本百分比字符串数组转纯数值数组方案
问题场景
原有脚本提取接口返回值得到的数组元素为带%后缀的字符串格式,打印结果如下:
['2.16%','1.34%','1.32%','1.25%','0.65%','0.48%','0.42%','0.26%','0.14%','0.06%','0.03%','0%']
需要移除控制台打印字符串自带的单引号标记、%特殊符号,最终得到纯数值类型的数组。
最优实现(简洁写法)
直接使用Karate支持的JS数组map方法一次性完成提取、去符号、类型转换操作,不需要手动初始化空数组写for循环:
# 一步完成提取+转换 def numFunctions = response.functions.map(item => Number(item.value.replace('%', ''))) * print numFunctions
逻辑说明
map会遍历response.functions下的所有元素,逐行处理后返回新数组item.value.replace('%', ''):把每个元素value字段里的%符号替换为空字符串,完成特殊符号移除Number():把去掉%后的字符串直接转为数值类型,自动适配浮点数、整数格式,比如'0'会自动转为数值0,'2.16'转为浮点数2.16,转成数值后控制台打印自然不会出现字符串专属的单引号标记- 如果接口返回值可能存在多个
%符号,把replace('%', '')替换为replaceAll('%', '')即可
兼容旧环境写法
如果运行环境的JS引擎不支持箭头函数,可以基于原有循环逻辑修改,在添加元素时直接做转换即可:
* def functions = [] * eval for(var i=0; i<response.functions.length; i++) { functions.add(Number(response.functions[i].value.replace('%', ''))) } * print functions
执行结果
两种写法执行后打印的结果均为目标纯数值数组:
[2.16,1.34,1.32,1.25,0.65,0.48,0.42,0.26,0.14,0.06,0.03,0]
所有元素均为数值类型,可直接用于后续计算、断言操作。
内容的提问来源于stack exchange,提问作者Narasimha
相关产品推荐
相关产品推荐

