如何在c#中提取文本字符串
本文关键字:提取 取文本 字符串 | 更新日期: 2023-09-27 18:10:42
我在c#中分割字符串有问题有一个字符串(text in 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:4 (输出到textbox2)
输出3:1 (输出到textbox3)
我该怎么办?
我该怎么做呢?
请给我button1_Click的完整代码
您可以尝试使用正则表达式来捕获列表中的四个值,或者使用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解析器。
对XML和HTML使用Regex的习惯警告:
您可以像这样提取<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]);
}
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);
}
}