Удалите конкретную строку в конкретной ситуации

#vb.net

Вопрос:

У меня есть строка формулы, которая, например, может выглядеть так:

 dim myvalue = "somevariable1   anothervalue * thirdvalue"
 

существует определенная переменная, называемая : extravariable

если эта переменная extravariable = 0 , я хотел бы удалить ее из myvalue . Обратите внимание, что это может быть где угодно: в начале/в конце или где-то посередине. кроме operator/operators того, связанные с ним также должны быть удалены, так что в конце мой formula стасис исправится. Некоторые примеры могут быть:

 dim myvalue = "extravariable * somevariable1   anothervalue * thirdvalue"
dim myvalue = "somevariable1   anothervalue * thirdvalue extravariable"
dim myvalue = "somevariable1   (extravariable * anothervalue) * thirdvalue"
 

так что после его удаления это выглядит так:

 dim myvalue = "somevariable1   anothervalue * thirdvalue"
dim myvalue = "somevariable1   anothervalue * thirdvalue"
dim myvalue = "somevariable1   (anothervalue) * thirdvalue"
 

Это были просто примеры, чтобы понять, что я имею в виду.

Единственными операторами, которые могут отображаться внутри формулы, являются: () - * / Pow(x,y)

Как я могу безопасно удалить его?

Комментарии:

1. Такой пример может быть доступен ? dim myvalue = «некоторое переменное1 значение / экстравариабельное * другое значение»

2. Похоже, для этого потребуется разумное использование String.IndexOf , чтобы выяснить, где в строке находится подстрока, чтобы вы знали, искать ли оператор до или после нее. Если это может закончиться посередине, вам также нужно подумать о том, заботитесь ли вы о том, сохранен ли оператор до или после.

3. Это немного сложно, так как вам также придется удалить оператора, учитывая приоритет оператора. Например a * extra b , мы должны удалить операцию раньше extra . В a extra * b оп после необходимо удалить. Я не знаю, можете ли вы сделать это с помощью простых операций со строками или регулярными выражениями. Вероятно, вам придется сделать небольшой синтаксический анализатор.

4. @AliFidanli единственными доступными операторами, которые могут отображаться в формулах, являются: () — * / Pow(x,y)

5. @OlivierJacot-Дескомб Мы знаем, какие операторы могут появиться в формуле — я обновил сообщение, которое вы видите там.