Упростить строку с помощью скрипта MATLAB - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть формат строки, который выглядит следующим образом (это не всегда 'A' и 'number' перед '_' и цифрами):

Eq = 'A_number_1+((A_number_2+A_number_3)&(A_number_+A_number_5))+A_number_6';

Как я могу упростить строку следующим образом ( с помощью скрипта):

Eq = 'A_number_(1+((2+3)&(4+5))+6)'

Для меня самый простой способ - удалить всю строку перед '_', кроме первой, но я не знаю, как это сделать в скрипте.

Редактировать: я пробовал это

Fq = regexprep(Eq, '^([A-Z]+_)(.*)', '$1\(${strrep($2,$1,'''')}\)');

Но он удаляет только итерации 'A_' и сохраняет 'итерации'.

Заранее спасибо за вашу помощь!

1 Ответ

0 голосов
/ 27 февраля 2020

Regexp мог бы выполнить эту работу, но я не понимаю, как его использовать, поэтому я сделал так:

A = 'A_number_1+((A_number_2+A_number_3)&(A_number_+A_number_5))+A_number_6';
CR_string = '';
for i=1:length(A)
    if A(i) == '('
    else
        if str2double(A(i)) == 1
            break;
        else
            CR_string = strcat(CR_string, A(i));
        end
    end
end
A = erase(A, CR_string);
A = strcat(CR_string, '(', A, ')');
disp(A);

Редактирование с помощью regexp:

NewStr = regexprep(Str, '^(\w+?)(\d+\W.*)', '$1\(${strrep($2,$1,'''')}\)');
...