Несколько замен в строке
Приветствую всех!
Как выполнить несколько замен в строке? Мой пример, строка - "func1(a,b) func2(c,a,b)" замене подлежит подстрока - "a,b" (где a и b - вещественные числа) строка-заменитель - "x,y". |
fedushok,
alert("func1(a,b) func2(c,a,b)".replace(/a,b/g, "x,y")); |
Дело в том, что a и b - это вещественные числа, и чему они равны не известно.
|
Если всегда последние, то:
.replace(/-?\d+,-?\d+\)/g, "x,y") |
fedushok,
условия задачи не конкретные, ... !!! alert("func1(100,900) func2(c,5,1)".replace(/\d+,\d+/g, "x,y")); |
Благодарю. Как иногда полезно прибегать к помощи на форуме!
1. Сильно ли повлияет на производительность если я добавлю "просмотр вперёд" -.replace(/-?\d+,-?\d+(?=\))/g, "x,y");? Приведённый пример замещает последнюю скобку, чего быть не должно. Или сделать замену со скобкой позади - .replace(/-?\d+,-?\d+\)/g, "x,y)");? 2. Вам удалось выделить в моём примере частный случай решения задачи (за что еще раз благодарю), но душа просит что-то общее. Что если задней скобки не будет? Выражение "a,b" железно идет после "func1(". |
fedushok,
если a и b известны, сделайте из них new RegExp |
Цитата:
|
Цитата:
Цитата:
|
fedushok,
сколько func всего? |
2. Но func1 только один раз.
|
fedushok,
alert("func1(100,900) func2(c,100,900)".replace(/func1\((\d+,\d+)([\S\s]+)\1/g, "func1(x,y$2x,y")); |
Можно комментарий как это работает
|
fedushok,
нашли первые скобки (\d+,\d+) смотрим есть ли далее повторение этих скобок\1 меняем ключ g не нужен |
а что значит "$2" в строке второго аргумента?
|
fedushok,
всё что между одинаковыми частями, вторые скобки ([\S\s]+) ) func2(c, |
https://learn.javascript.ru/regular-...ons-javascript вот тут все отлично расписано по регексам.
|
Часовой пояс GMT +3, время: 05:20. |