Разделение строки на другую строку - PullRequest
1 голос
/ 03 декабря 2011

Я получил строку, которую мне нужно разделить другой строкой, которая является подстрокой оригинальной. Допустим, я получил следующий текст:

string s = "<DOC>something here <TEXT> and some stuff here </TEXT></DOC>"

И я хочу получить:

"and some stuff here"

Мне нужно получить строку между "<TEXT>" и его шкафчиком "</TEXT>".

Мне не удается сделать это с помощью обычного метода разбиения строки, даже если один из параметров функции имеет тип string[]. Я пытаюсь это:

Console.Write(s.Split("<TEXT>")); // Which doesn't compile

Заранее благодарим за помощь.

Ответы [ 5 ]

2 голосов
/ 03 декабря 2011
var start = s.IndexOf("<TEXT>");
var end = s.IndexOf("</TEXT>", start+1);
string res;
if (start >= 0 && end > 0) {
    res = s.Substring(start, end-start-1).Trim();
} else {
    res = "NOT FOUND";
}
1 голос
/ 03 декабря 2011
var output = new List<String>();
foreach (Match match in Regex.Matches(source, "<TEXT>(.*?)</TEXT>")) {
    output.Add(match.Groups[1].Value);
}
1 голос
/ 03 декабря 2011
string s = "<DOC>something here <TEXT> and some stuff here </TEXT></DOC>";
string result = Regex.Match(s, "(?<=<TEXT>).*?(?=</TEXT>)").Value;

РЕДАКТИРОВАТЬ: я использую этот шаблон регулярных выражений (?<=prefix)find(?=suffix), который будет соответствовать позиции между префиксом и суффиксом.

РЕДАКТИРОВАТЬ 2: Найти несколько результатов:

MatchCollection matches = Regex.Matches(s, "(?<=<TEXT>).*?(?=</TEXT>)");
foreach (Match match in matches) {
    Console.WriteLine(match.Value);
}
1 голос
/ 03 декабря 2011

Разделение на "<TEXT>" в любом случае не поможет вам, так как тег закрытия - "</TEXT>".

Самое надежное решение - правильно проанализировать его как XML. C # обеспечивает функциональность для этого. Второй пример на http://msdn.microsoft.com/en-us/library/cc189056%28v=vs.95%29.aspx должен поставить вас на правильный путь.

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

0 голосов
/ 03 декабря 2011

Если последний тег </doc>, то вы можете использовать XElement.Load для загрузки XML, а затем пройти через него, чтобы найти нужный элемент (вы также можете использовать Linq To XML).

Если это не обязательно правильная строка XML, вы всегда можете пойти с Regural Expressions, чтобы найти нужную часть текста.В этом случае выражение не должно быть трудно написать это самостоятельно.

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