如何从空手道中的响应 header 中提取双引号中的值

How to extract value in double quotes from a response header in karate

我想要响应 header etag 中的特定值。

回应header:

etag: W/"118-pbdwwFo9SKNhD3Lx5iHJyngpq00"

空手道代码:

    * def etag = responseHeaders['etag'][0]
    * print 'Value of Etag is', etag
    * def etagValue = etag.substring(etag.lastIndexOf('-') + 1)
    * print 'Value of Etag is', etagValue

它给了我预期的完整 etag 的值。现在我只想获取如下特定值。

etag 变量有值

W/"118-pbdwwFo9SKNhD3Lx5iHJyngpq00"

etagValue 变量在这里有值如何从结尾删除双引号

pbdwwFo9SKNhD3Lx5iHJyngpq00"

期望值,其中 - 是左边界," 是我需要的值的右边界。

pbdwwFo9SKNhD3Lx5iHJyngpq00

使用indexOf()两次。给你:

* def etag = 'W/"118-pbdwwFo9SKNhD3Lx5iHJyngpq00"'
* def temp1 = etag.substring(etag.indexOf('-') + 1)
* def temp2 = temp1.substring(0, temp1.indexOf('"'))
* match temp2 == 'pbdwwFo9SKNhD3Lx5iHJyngpq00'

为了完整起见,还有一个可以使用正则表达式的karate.extract() API:

* def extracted = karate.extract(etag, '-([^\"]+)"', 1)
* match extracted == 'pbdwwFo9SKNhD3Lx5iHJyngpq00'