grep / regex для выполнения итерации / приращения - PullRequest
1 голос
/ 08 июня 2011

Я продолжаю сталкиваться с ситуациями, когда мне нужно иметь приращенные переменные, но я не нашел пути для написания сценария, поэтому я в конечном итоге кодирую его вручную, что ужасно, когда есть тонна энти. Я нашел код на этом сайте , который, как я думал, будет работать, но моему текстовому редактору (TextWragler) он не понравился (или я что-то сделал неправильно). Это был пример:

Initial Contents:   Var22 Var20 Var86 Var30
Search String:      Var*[0-9]
Replace String:     Var%1>49>
Results:    Var50 Var51 Var52 Var53


Строка замены только что вернулась.

Я собираюсь использовать это, чтобы увеличить что-то вроде:

<span id="x">something</span> <span id="x">else</span> <span id="x">entirely</span>

значение x следует заменить на x1, x2, x3 или какую-то другую «строку» + n. Было бы идеально, если бы он мог распознавать и перенумеровать неправильно пронумерованные переменные, как предполагает этот код grep.
Любая идея, как я могу сделать эту работу? Могу ли я не использовать textWrangler? Спасибо

Кстати, я пытаюсь стать лучше в javascript, и мне действительно любопытно, как я могу реализовать что-то вроде этого (grep / приращение строк) в javascript?

1 Ответ

2 голосов
/ 08 июня 2011

Не уверен, что вы хотите, но если вы хотите применить (арифметическую или другую) операцию, скажем, к числовой части после 'Var', вы можете сделать что-то подобное, используя функцию делегата

'Var22 Var20 Var86 Var30'
   .replace(/(Var)(\d+)/g,
            function(a,b,c){return b+(Number(c)+10)}
           ); //=> Var32 Var30 Var96 Var40

В регулярных выражениях javascript знак % равен $, а индекс совпадений начинается с 1. Если вы просто хотите заменить число в 'Var12` на 9, оно выглядит следующим образом:

'Var12'.replace(/(Var)(\d+)/,'$19'); //=> Var9
//     Var (=$1)  ^^^   ^ 1 or more numbers (=$2)

Эта веб-страница дает вам больше информации о javascript Регулярные выражения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...