Есть ли простые способы заменить сотни заполнителей в тексте? - PullRequest
1 голос
/ 04 июля 2019

Я создаю текстовый файл, который мне нужно динамически заменить множеством идентификаторов для разных строк.Я заметил использование ключевого слова «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 Ответ

3 голосов
/ 04 июля 2019

Здесь вы можете начать писать небольшие кусочки 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() для объекта Java String.Обратитесь к документации "Java Interop", если вы хотите узнать больше.

...