Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Несколько замен в строке (https://javascript.ru/forum/misc/74244-neskolko-zamen-v-stroke.html)

fedushok 24.06.2018 17:42

Несколько замен в строке
 
Приветствую всех!

Как выполнить несколько замен в строке? Мой пример,
строка - "func1(a,b) func2(c,a,b)"
замене подлежит подстрока - "a,b" (где a и b - вещественные числа)
строка-заменитель - "x,y".

рони 24.06.2018 17:53

fedushok,
alert("func1(a,b) func2(c,a,b)".replace(/a,b/g, "x,y"));

fedushok 24.06.2018 17:59

Дело в том, что a и b - это вещественные числа, и чему они равны не известно.

Aetae 24.06.2018 18:03

Если всегда последние, то:
.replace(/-?\d+,-?\d+\)/g, "x,y")

рони 24.06.2018 18:05

fedushok,
условия задачи не конкретные, ... !!!
alert("func1(100,900) func2(c,5,1)".replace(/\d+,\d+/g, "x,y"));

fedushok 24.06.2018 18:22

Благодарю. Как иногда полезно прибегать к помощи на форуме!
1. Сильно ли повлияет на производительность если я добавлю "просмотр вперёд" -.replace(/-?\d+,-?\d+(?=\))/g, "x,y");? Приведённый пример замещает последнюю скобку, чего быть не должно. Или сделать замену со скобкой позади - .replace(/-?\d+,-?\d+\)/g, "x,y)");?
2. Вам удалось выделить в моём примере частный случай решения задачи (за что еще раз благодарю), но душа просит что-то общее. Что если задней скобки не будет? Выражение "a,b" железно идет после "func1(".

рони 24.06.2018 18:28

fedushok,
если a и b известны, сделайте из них new RegExp

fedushok 24.06.2018 18:32

Цитата:

Сообщение от рони (Сообщение 488218)
fedushok,
условия задачи не конкретные, ... !!!
alert("func1(100,900) func2(c,5,1)".replace(/\d+,\d+/g, "x,y"));

Дело в том, что a и b во всем выражении одинаковые. Как учесть, что замене подлежит все пары чисел, которые в точности совпадают с двумя вещественными числами, которые через запятую идут сразу после "func1("?

fedushok 24.06.2018 18:35

Цитата:

Сообщение от рони (Сообщение 488225)
fedushok,
если a и b известны, сделайте из них new RegExp

Цитата:

Сообщение от fedushok (Сообщение 488215)
Дело в том, что a и b - это вещественные числа, и чему они равны не известно.

Известно, что они идут сразу после "func1(", а затем далее еще один раз

рони 24.06.2018 18:41

fedushok,
сколько func всего?


Часовой пояс GMT +3, время: 05:10.