решаемые !Законченное использование этого, чтобы сделать то, что я хотел:
if (output.Contains("<%TABLE#"))
{
string pattern = @"<%TABLE#([0-9]+)%%>";
RegexOptions options = RegexOptions.Multiline;
foreach (Match m in Regex.Matches(output, pattern, options))
{
int objectID = Int32.Parse(Regex.Match(m.Value, @"\d+").Value);
output = output.Replace(m.Value, ConvertFunction(objectID));
}
}
В некоторых частях моих данных SQL (представленных интерфейсом веб-сайта C # / ASP.NET) есть строки, многие из которых могут содержать образецкак <% TABLE # [NUMBER] %%> - [NUMBER] всегда является определенным идентификатором, 1+.Пример в одной строке будет выглядеть как <% TABLE # 3 %%>.Иногда в одной и той же строке может быть несколько таких шаблонов.В конечном итоге я пытаюсь сделать следующее:
- Найти все экземпляры в строке, где встречается шаблон
- Для каждого экземпляра вызвать другую функцию здания, используя #, который присутствует - этопринимает этот # и создает NewString
- Заменить этот экземпляр кода на NewString
Я делаю это потому, что в каждой из таблиц SQL есть страница веб-сайта, на которой отображаются данные вконечный пользователь.То, как я форматирую данные, отличается от таблицы к таблице, поэтому у меня есть класс для каждой таблицы, который создает выходную строку и возвращает ее при необходимости.Иногда мне нужно отобразить объект из другой таблицы в текущей.Чтобы попытаться решить эту проблему, я добавил приведенную выше формулу в строку, в конкретном месте, где я хочу, чтобы объект отображался, в надежде идентифицировать его и использовать идентификатор внутри, чтобы получить соответствующий объект, построить его, а затем заменитьpattern.
Я предполагаю, что мне придется использовать Regex или что-то еще, чтобы идентифицировать строку, но я изо всех сил пытаюсь найти лучший способ получить шаблон, определить число внутри него, вызвать функцию рендеринга.выходной текст с использованием указанного числа, а затем замените этот конкретный шаблон на результаты.
Ниже приведены некоторые примеры входных данных и их выходные данные.Функция ConvertFormula принимает INT и выводит STRING.
ПРИМЕР ВХОДОВ / ОЖИДАЕМЫЙ ВЫХОД
Пример 1: "Here's some data and more stuff.<%TABLE#3541%%>Here is more text.
<%TABLE#31214%%>And some more."
Выход 1:"Here's some data and more stuff." + ConvertFormula(3541) + "Here is more text." + ConvertFormula(31214) + "And some more."
Пример 2: "Here's some data and more stuff! Maybe more here!<%TABLE#2%%>Here is more text."
Выход 2: "Here's some data and more stuff! Maybe more here!" + ConvertFormula(2) + "Here is more text."
Пример 3: "<%TABLE#2%%>This is something completely different with the object call at the start.<TABLE#52%%> and another here."
Выход 3: ConvertFormula(2) + "This is something completely different with the object call at the start." + ConvertFormula(52) + " and another here."
Пример 4: "There's nothing in this one, no code to find. Just has some text."
Выход 4: "There's nothing in this one, no code to find. Just has some text."
Пример 5: "This one goes on for a while, like 5132854123 characters, then has a single call right here.<%TABLE#112%%>"
Выход 5: "This one goes on for a while, like 5132854123 characters, then has a single call right here." + ConvertFormula(112)
Пример 6: "Short <%TABLE#412%%> one."
Выход 6: "Short " + ConvertFormula(412) + " one."
Пример 7: "Nothing here again."
Выход 7: "Nothing here again."