#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-Дескомб Мы знаем, какие операторы могут появиться в формуле — я обновил сообщение, которое вы видите там.