Извлечение строки из исходной строки, которая находится между 2 строками - PullRequest
1 голос
/ 23 марта 2011

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

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

    string strSource = "The LoadUserProfile call failed with the following error: ";
    string strResult = string.Empty;
    string strStart = "loaduserProfile";
    string strEnd = "error";

    int startindex = strSource.IndexOf(strStart, StringComparison.OrdinalIgnoreCase);
    int endindex = strSource.LastIndexOf(strEnd, StringComparison.OrdinalIgnoreCase);

    startindex = startindex + strStart.Length;

    int endindex = endindex - startindex;
    strResult = strSource.Substring(startindex, endindex);

Спасибо D.Mahesh

Ответы [ 2 ]

1 голос
/ 23 марта 2011

Используйте regex и найдите значение группы, но не уверены, будет ли оно быстрее или медленнее.

Вот пример кода для реализации этого с использованием Regex (без VS, поэтому извините, если есть синтаксическая ошибка)

string pattern = Regex.Escape(strStart) + "(?<middle>[\s\S]*)" + Regex.Escape(strEnd); 
Match match = Regex.Match(strSource, pattern);
if (match.Success)
{
   // read the group value matches the name "middle"
   ......
}
0 голосов
/ 23 марта 2011

Ваш код - довольно точное манипулирование строками. Я не думаю, что это можно сделать быстрее алгоритмически. Вы также можете сделать это с помощью регулярного выражения, но я не верю, что в этом случае оно также будет быстрее.

Если вам не нужна нечувствительность к регистру, изменение StringComparison.OrdinalIgnoreCase на StringComparison.Ordinal должно обеспечить некоторое ускорение.

В противном случае вам, вероятно, придется искать улучшения скорости в других местах.

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