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

У меня данные посылаются скрипту, и это нужно делать автоматически. Но у меня как раз случай, что посылаются они из Эксела, так что можно и средствами 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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

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