Как извлечь строку текста в C # - PullRequest
2 голосов
/ 09 октября 2011

У меня проблемы с разбиением строки в c #, есть строка (текст в textbox0)

start and dffdfdddddddfd<m>one</m><m>two</m><m>three</m><m>four</m>dbfjnbjvbnvbnjvbnv and end

, и я хочу извлечь текст между <m> и </m>когда нажимаешь на button1 и мне нужен 3 вывод:

вывод 1 : один два три четыре (вывод в textbox1)

вывод 2 : четыре (вывод в textbox2)

вывод 3 : один (вывод в textbox3)

что мне делать?

как мне это сделать?

пожалуйста, дайте мне полный код для button1_Click

спасибо и всего наилучшего.

Ответы [ 3 ]

6 голосов
/ 09 октября 2011

Вы можете попробовать регулярное выражение для захвата четырех значений в списке, используя LINQ:

List<string> results = Regex.Matches(s, "<m>(.*?)</m>")
                            .Cast<Match>()
                            .Select(m => m.Groups[1].Value)
                            .ToList();

или для C # 2.0:

List<string> results = new List<string>();
foreach (Match match in Regex.Matches(s, "<m>(.*?)</m>"))
{
     results.Add(match.Groups[1].Value);
}

Затем вы можете использовать string.Join, Enumerable.First (или results[0]) и Enumerable.Last (или results[results.Length - 1]) для получения необходимых выходов.

Если это XML, вы должны использовать вместо него анализатор XML.

1 голос
/ 09 октября 2011
using System;
using System.Linq;
using System.Xml.Linq;

class Program{
    static void Main(string[] args){
        string data = "start and dffdfdddddddfd<m>one</m><m>two</m><m>three</m><m>four</m>dbfjnbjvbnvbnjvbnv and end";
        string xmlString = "<root>" + data + "</root>";
        var doc = XDocument.Parse(xmlString);
        var ie = doc.Descendants("m");
        Console.Write("output1:");
        foreach(var el in ie){
            Console.Write(el.Value + " ");
        }
        Console.WriteLine("\noutput2:{0}",ie.Last().Value);
        Console.WriteLine("output3:{0}",ie.First().Value);
    }
}
1 голос
/ 09 октября 2011

С обычным предупреждением против использования Regex для XML и HTML:

Вы можете извлечь текст между <m> и </m>, например, так:

     string input =
            "start and dffdfdddddddfd<m>one</m><m>two</m><m>three</m><m>four</m>dbfjnbjvbnvbnjvbnv and end";
     var matches = Regex.Matches(input, "<m>(.*?)</m>");
     foreach (Match match in matches)
     {
        Console.WriteLine(match.Groups[1]);
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...