有什么简单的方法可以替换文本中的数百个占位符

时间:2019-07-04 13:06:19

标签: 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     |
              ......

如果有成千上万的替换件,那么在功能文件中的方案部分中写这不是一个好主意

1 个答案:

答案 0 :(得分:3)

在这里您可以开始编写小段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()实际上是Java replace()对象上的相同String方法。如果您想了解更多信息,请参考“ Java互操作”文档。