You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 23:30:51