Как построить список строк из параметров формулы Excel в c # - PullRequest
1 голос
/ 11 февраля 2011

Мой вопрос может показаться странным, но я придерживаюсь этого сценария. Мне нужно проанализировать формулу Excel (получая ее из Office.Interop.Excel) и получить параметры из формулы (количество параметров может варьироваться) Есть несколько случаев для рассмотрения. E.g.:

1. myformula("param1", "param2")
2. myformula("param1", A2)
3. myformula("param1", , "param3")
4. myformula(A1, , "param3")
5. myformula("param1, has commas in it", "param2")

Есть ли более хороший способ разобрать это, в отличие от наличия нескольких ветвей if (особенно если учесть, что строковый массив смешан, то есть некоторые параметры имеют кавычки, а другие параметры являются ссылочными параметрами)?

Использование string split(',') не кажется слишком полезным, поскольку у меня может быть запятая в самом параметре.

Я тоже пробовал

string[] paramArray = new string[]{(parameters)}

где parameters = "\"param1\", \"param2\"";

но, похоже, это тоже не сработало (не будет работать вообще, если у меня есть пустой параметр, но это другой случай).

Мой результат должен быть чем-то вроде массива (или списка, или любой другой коллекции), который будет содержать все параметры, и если у параметра нет кавычек, то мне нужно будет его оценить.

Буду признателен за любую помощь.

1 Ответ

0 голосов
/ 11 февраля 2011

Я бы обработал строку в поисках " или ,, если "найден поиск fwd, ищущий закрывающий ", игнорирующий любые , по пути и с учетом возможности затруднения " в параметре. Когда вы получаете закрытие ", возобновите поиск " или , и повторите.

Другим вариантом будет использование split, но затем проверка результатов для элементов, начинающихся с ". Объедините их со следующим элементом массива для получения полного параметра (может быть, что> 2 последовательных элемента массива должны быть объединены). Также следите за строками, такими как "zzz"",""xxx" (одна строка = zzz "," xxx)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...