首页 > 解决方案 > 有什么简单的方法可以替换文本中的数百个占位符

问题描述

我正在创建一个文本文件,我需要为不同的行动态替换许多 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     |
              ......

如果有数千个替换,在功能文件的场景部分中写这里不是一个好主意

标签: karate

解决方案


在这里,您可以开始编写一小段 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 互操作”的文档。


推荐阅读