2016-02-18 4 views
1

У меня есть строка, какПринимая подстроку из строки

string str = "<abc> hello </abc> <abc> world </abc>" 

Output in List/Array : 
hello 
world 

Теперь я хочу, чтобы извлечь только тексты между <abc> и </abc>. Может быть n число тегов abc. Поэтому я просто хочу, чтобы между текстом.
Как я могу это сделать.

Я пробовал использовать split, но это не дает между текстом.

+2

Вы можете использовать XMLDocument или XDocument класс для разбора строки как записи XML, то вы получите текст между вашими тегами. – Kami

ответ

7

Вы можете использовать регулярные выражения (регулярные выражения), например:

string str = "<abc> hello </abc> <abc> world </abc>"; 
string pattern = "<abc>(.*?)</abc>"; 

var matches = Regex.Matches(str, pattern); 

var result = matches.Cast<Match>().Select(m => m.Groups[1].Value.Trim()).ToArray(); 

Надеется, что это помогает.

0

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

List<String> list1 = new List<String>(); 
string str = "<abc> hello </abc> <abc> world </abc>"; 
string[] array = str.Split(' '); 
foreach (string word in array) 
{ 
    if (word != "<abc>" && word != "</abc>") 
    { 
     list1.Add(word); 
    } 
}