2013-04-15 5 views
-1

Я нашел this ответ на мой вопрос, но это для PHP. Возможно, есть аналог для .NET? Я знаю о методе Split, но я не понимаю, как сохранить текст за пределами моих тегов <@[email protected]>, и мне нужно регулярное выражение (по условию задачи).RegEx для разделения текста на строку .NET

Например:

string: aaa<@[email protected]>aaa<@[email protected]>c 

list: aaa 
     <@[email protected]> 
     aaa 
     <@[email protected]> 
     c 
+2

Можете ли вы показать нам, что вы пробовали? –

ответ

0

Здесь вы прохождения теста. Найти его в Интернете было не сложно, и для вас было бы определенно быстрее и лучше - попробуйте сначала найти решение самостоятельно, попробуйте код, а затем задайте вопрос. Таким образом, вы действительно узнаете что-то.

[TestMethod] 
public void TestMethod1() 
{ 
    string source = "aaa<@[email protected]>aaa<@[email protected]>c"; 
    Regex r = new Regex("(<@[email protected]>)"); 

    string[] result = r.Split(source); 
    Assert.AreEqual(5, result.Length); 
} 
+0

Большое спасибо. Я всегда пытаюсь найти решение, но регулярные выражения настолько сложны для меня – holder

+0

Прохладный. Регулярные выражения не следует злоупотреблять, но иногда они очень удобны. Стоит узнать кое-что о них. Если этот или любой другой ответ помог вам - повысите его и отметьте его как ответ. Мы все любим репутацию;) – Pako

+0

Хотелось бы проголосовать, но у меня репутация низкая, чем 15. Извините. – holder

0
string input = @"aaa<@[email protected]>aaa<@[email protected]>c"; 
var list = Regex.Matches(input, @"\<.+?\>|[^\<].+?[^\>]|.+?") 
       .Cast<Match>() 
       .Select(m => m.Value) 
       .ToList(); 
+0

Несмотря на то, что ваше решение верное - я бы предпочел, чтобы мой - проще и сделал то, для чего он был предназначен. Однако мне нравится ваше регулярное выражение. Я никогда не узнаю, как быстро их читать;) – Pako

+0

@Pako Я не могу читать собственное регулярное выражение после одного дня. поэтому я в основном стараюсь избегать использования регулярных выражений :) Для этого вопроса я бы просто использовал ** 'input.Split (новый char [] {'<', '>'});' ** затем добавить '<' and '>' – I4V

Смежные вопросы