Строка поиска для подстроки - PullRequest
4 голосов
/ 10 августа 2010

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

Итак, примеры подстроки мне нужны:

Testing="network\smithj"  

или

Testing="network\rodgersm"  

Имеют ли смысл мои требования? Как я могу сделать это в C #?

Ответы [ 3 ]

10 голосов
/ 10 августа 2010

Это отличное применение регулярного выражения.

"Testing=\"[^\"]*\""

Вы будете использовать его следующим образом:

Regex reg = new Regex("Testing=\"[^\"]*\"");
string login = reg.Match(yourInputString).Groups[0].Value;

Вышеприведенное работает с вашими двумя приведенными тестами..

В Википедии есть отличная статья о Регулярных выражениях , если вы с ними не знакомы.И если вы выполните поиск в Google , вы сможете найти массу информации о том, как использовать регулярные выражения в C #.

9 голосов
/ 10 августа 2010

Что-то вроде:

const string Prefix = "Testing=\"";

static string FindTestingSubstring(string text)
{
    int start = text.IndexOf(Prefix);
    if (start == -1)
    {
        return null; // Or throw an exception
    }
    int end = text.IndexOf('\"', start + Prefix.Length);
    if (end == -1)
    {
        return null; // Or throw an exception
    }
    return text.Substring(start + Prefix.Length, end - start - Prefix.Length);
}

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

0 голосов
/ 11 августа 2010

Если искомая строка очень большая, вы можете не использовать регулярные выражения. Регулярные выражения сравнительно медленны в сопоставлении и обычно проверяют каждый символ. Вместо этого ищите алгоритм сопоставления строк Бойера-Мура, который обычно проверяет только часть символов. Реализация CLR для string.IndexOf (string) может или не может использовать этот алгоритм - вам придется проверить.

Ах, вот полезная ссылка с некоторыми результатами теста: http://www.arstdesign.com/articles/fastsearch.html

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