如何在Karate中提取响应头etag里双引号包裹的指定值
Karate 提取 ETag 指定值去除尾部双引号的实现方法
你当前的代码只处理了左边界'-',没有限制右边界'"',可以通过以下两种方式实现需求:
方案1:继续使用 substring 方法计算边界
和现有代码逻辑保持一致,修改成本低,适合固定格式的 ETag 场景:
* def etag = responseHeaders['etag'][0] * print '完整ETag值为', etag * def startIndex = etag.lastIndexOf('-') + 1 * def endIndex = etag.indexOf('"', startIndex) * def etagValue = etag.substring(startIndex, endIndex) * print '提取后的目标值为', etagValue
思路是先确定'-'之后的起始位置,再找到该起始位置后第一个双引号的位置,截取中间内容即可。
方案2:使用正则匹配提取(更稳妥)
不需要手动计算索引,适配性更强,即使 ETag 前缀格式有小变动也能正常提取:
* def etag = responseHeaders['etag'][0] * def etagValue = karate.extract(etag, '-(.*?)"', 1) * print '提取后的目标值为', etagValue
这里正则-(.*?)"表示匹配'-'之后、第一个'"'之前的所有字符,第二个参数1表示取正则中第一个捕获组的内容。
两种方案执行后得到的etagValue都是你需要的pbdwwFo9SKNhD3Lx5iHJyngpq00,无多余双引号。
内容的提问来源于stack exchange,提问作者Maddy
相关产品推荐
相关产品推荐

