Jump to content

Задача по замене символов в строке


Recommended Posts

Как сделать на PHP замену точки с запятой на запятую между всеми аргументами функций MAX и MIN, если они есть в строке? В других местах заменять это не надо.

Нужно заменить с учетом возможных вложенных максимумов внутри главной функции и наличия других скобок там.

Пример: 3+MAX(3+5*(2+4)-MAX(5;9); 5; 4+A1)+MIN(5;30) -> 3+MAX(3+5*(2+4)-MAX(5,9), 5, 4+A1)+MIN(5,30)

Link to comment
Share on other sites

Я никаким образом НЕ программист, но что мешает сделать такую замену в Word'e?

Извините, если чушь сказал :thumbup:

Link to comment
Share on other sites

У меня данные посылаются скрипту, и это нужно делать автоматически. Но у меня как раз случай, что посылаются они из Эксела, так что можно и средствами VBA это сделать. Просто на PHP, наверно, легче.

Link to comment
Share on other sites

если они есть в строке

Ну если нужно заменить в строке то функцией strstr попробуй.

$stroka = strstr ($stroka, ";", ",");

Извиняюсь. Функция называется по другому.

$stroka = str_replace ($stroka, ";", ",");

Ну если нужно заменить в строке то функцией str_replace попробуй.

$stroka = str_replace ($stroka, ";", ",");
Link to comment
Share on other sites

Если знак ; стоит только там где он должен стоять, то действительно можно сделать простую замену, которая заменит все ; в строке.

Если же надо проигнорировать ; за пределами скобок у функций MIN и MAX то придется делать замену по регулярному выражению

но так как есть вложеные функции и скобки, возникает вопрос, нужно ли заменять ; в других функциях и в просто скобках или не нужно? чем больше ограницений, тем сложнее получится регулярное выражение, вплоть до рекурсивного выражения

Link to comment
Share on other sites

но так как есть вложеные функции и скобки, возникает вопрос, нужно ли заменять ; в других функциях и в просто скобках или не нужно? чем больше ограницений, тем сложнее получится регулярное выражение, вплоть до рекурсивного выражения

В общем, с помощью людей с др. форума я разобрался. Не обязательно писать какое-то большое рег. выражение, можно сделать переменную, указывающую на то, открыта ли скобка, и увеличивать ее при открытии, а при закрытии уменьшать. Мне нужно было заменять в скобках, даже если они вложены. В других функциях - пока они не используются, но код может быть примерно тот же.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...