Вот простой пример того, как вы можете сделать это с помощью регулярных выражений. В зависимости от того, насколько варьируется строка, эта может работать для вас. Я предполагаю, что кавычки (") согласуются так же, как и текст между ними. Вам нужно будет добавить эту строку вверху:
Использование System.Text.RegularExpressions;
Код:
string input = "L 02/28/2012 - 06:14:22: \"Acid<1><VALVE_ID_PENDING><CT>\" killed \"Player<2><VALVE_ID_PENDING><TERRORIST>\" with \"m249\"";
Regex reg = new Regex("[^\"]+\"([^<]+)<[^\"]+\" killed \"([A-Za-z0-9]+)[^\"]+\" with \"([A-Za-z0-9]+)\"");
Match m = reg.Match(input);
if (m.Success)
{
string player1 = m.Groups[1].ToString();
string player2 = m.Groups[2].ToString();
string weapon = m.Groups[3].ToString();
}
Синтаксическая разбивка для регулярного выражения такова:
[^ \ "] +
означает, что идти, пока мы не нажмем двойную кавычку (")
\ "
означает принять кавычку в качестве следующей части строки, так как предыдущий термин приводит нас к ней, но не проходит мимо нее.
([^ <] +) <</p>
Скобка означает, что мы заинтересованы в результатах этой части, мы будем искать, пока не достигнем меньше, чем (<). поскольку это первая «группа», которую мы собираемся извлечь, в матче она называется Groups [1]. И снова у нас есть персонаж, которого мы искали, чтобы использовать его и продолжить поиск. </p>
<[^ \ "] + \" убит \ "</p>
Это снова будет искать, не сохраняя результаты без скобок, пока мы не достигнем следующей кавычки. Затем мы вручную указываем строку ("kill"), так как нас интересует, что после этого.
([A-Za-z0-9] +)
Это будет захватывать любые символы для результата нашей группы [2], которые состоят из букв, цифр, верхнего или нижнего регистра.
[^ \ "] + \"
Поиск и игнорирование остальных, пока мы не найдем следующую двойную кавычку
с \ "
Другая литеральная строка, которую мы используем в качестве маркера
* +1054 * ([A-Za-z0-9] +)
То же, что и выше, вернуть буквенно-цифровое значение как наша группа [3] с круглыми скобками
\ "
Завершите последнюю цитату.
Надеюсь, это объясняет это. Google для "шпаргалки регулярных выражений" очень полезен для запоминания этих правил.