karate - 有什么简单的方法可以替换文本中的数百个占位符
问题描述
我正在创建一个文本文件,我需要为不同的行动态替换许多 ID。我注意到“replace”关键字的用法,但是,对于成千上万的占位符替换,将所有内容都写在功能中并不是一个好主意。
我像这样创建一个模板文件(NTSH.A01)(实际上有数千行):
SEQ PAT WELL COUNTS CONC PLATENR CODE
29 13 A04 14033 3.6 1 L
32 14 A05 2993 5.4 1 M
32 15 A06 2993 9.4 1 H
33 17 A07 2993 9 1 <barcode0>
33 17 A08 2993 9 1 <barcode1>
33 17 A09 2993 9 1 <barcode2>
33 17 A10 2993 9 1 <barcode3>
33 17 A11 2993 9 1 <barcode4>
33 17 A12 2993 9 1 <barcode5>
33 17 B01 2993 9 1 <barcode6>
33 17 B02 2993 9 1 <barcode7>
......
我的功能文件:
Scenario:
* def textContent = karate.readAsString('classpath:resources/NTSH.A01')
* replace textContent
|token |value |
|barcode0|0 |
|barcode1|1 |
|barcode2|2 |
|barcode3|3 |
|barcode4|4 |
|barcode5|5 |
|barcode6|6 |
|barcode7|7 |
......
如果有数千个替换,在功能文件的场景部分中写这里不是一个好主意
解决方案
在这里,您可以开始编写一小段 JavaScript 甚至 Java 代码来做您想做的事。这是一种可能的方法:
* def data = karate.readAsString('classpath:resources/NTSH.A01')
* def fun = function(n){ var temp = data.replace('<barcode' + n + '>', n + ''); karate.set('data', temp) }
* eval karate.repeat(8, fun)
这data.replace()
实际上是replace()
JavaString
对象上的相同方法。如果您想了解更多信息,请参阅有关“Java 互操作”的文档。
推荐阅读
- python - tensorflow_probability:当反向传播正态分布样本的 log_prob 时,梯度始终为零
- javascript - RxJS 观察数组并在更改时中止请求
- java - 为表格生成序号的技术
- python - Opencv:错误:(-215:断言失败)_src.total()> 0在函数'cv :: warpPerspective'中
- java - 如何解决 Eclipse IDE 中 EclEmma 插件中的“启动 ServiceTest 遇到问题”
- c - 如何处理 C 中的缓冲区溢出?
- android - 使用 Picasso 和 Glide 的占位符图像显示但不是实际图像 - Android
- c# - 如何在 C# 中消除二维数组中的重复项
- python - 为上个月的行数添加新列
- c# - 转换为 system.net.mail.mailMessage 错误