Поиск параметров с помощью токенов (IndexOf или IndexOfAny) - PullRequest
0 голосов
/ 25 октября 2011

В настоящее время я смог получить значение xpath в предоставленных мной токенах, как показано ниже

using (StreamReader streamReader = new StreamReader(memoryStream))
{
    while ((CurrentLine = streamReader.ReadLine()) != null)
    {
        int startPos = CurrentLine.IndexOf("{:");
       int endPos = CurrentLine.LastIndexOf(":}");

       if (startPos > 0 && endPos > 0)
       {
           string xPathstr = CurrentLine.Substring(startPos + 2, (endPos - startPos - 2));

           XPathNodeIterator myXPathNodeIterator = myXPathNavigator.Select("/"+ xPathstr);

           while (myXPathNodeIterator.MoveNext())
           {
               Console.WriteLine(myXPathNodeIterator.Current.Value);
               TemplateMemoryBuilder.Append(CurrentLine.Replace(CurrentLine.Substring(startPos, ((endPos + 2) - startPos)), myXPathNodeIterator.Current.Value));
               TemplateMemoryBuilder.Append(Environment.NewLine);
           }

       }
       else
       {
           TemplateMemoryBuilder.Append(CurrentLine);
           TemplateMemoryBuilder.Append(Environment.NewLine);
       }
    }
}

Я пытаюсь найти способ получить параметры с тегами, если найдено несколько теговв строке, такой как:

This is a test to merge item {:/MyTest/TestTwo/Text1:} and {:/MyTest/TestTwo/Text2:} on the same line.

Могу ли я использовать метод IndexOfAny для выполнения этой задачи?Я не уверен, как это сделать.Программа работала нормально, пока я не обнаружил, что это был возможный результат теста, данного мне

1 Ответ

1 голос
/ 25 октября 2011

Вы можете использовать регулярное выражение, чтобы соответствовать вашим токенам. Это сделает ваш код более читабельным.

Пример регулярного выражения и соответствующий код

        var regex = new Regex("{:.+?}");
        var input =
            "This is a test to merge item {:/MyTest/TestTwo/Text1:} and {:/MyTest/TestTwo/Text2:} on the same line.";
        var matches = regex.Matches(input);

находит два совпадения без операций индекса и (дорогостоящих) строковых операций.

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