C# 将html行拆分为字符串数组

C# 将html行拆分为字符串数组,c#,regex,string,split,toarray,C#,Regex,String,Split,Toarray,我在html文件中的表格中有数据: <table> <tr><td>001</td><td>MC Hammer</td><td>Can't Touch This</td></tr> <tr><td>002</td><td>Tone Loc</td><td>Funky Cold Medina</td

我在html文件中的表格中有数据:

<table>
    <tr><td>001</td><td>MC Hammer</td><td>Can't Touch This</td></tr>
    <tr><td>002</td><td>Tone Loc</td><td>Funky Cold Medina</td></tr>
    <tr><td>003</td><td>Funkdoobiest</td><td>Bow Wow Wow</td></tr>
</table>

我不能碰这个
002Tone LocFunky冷麦地那
003FunkdoobiestBow哇
如何将单行拆分为数组或列表

string row = streamReader.ReadLine();

List<string> data = row.Split //... how do I do this bit?

string artist = data[1];
string行=streamReader.ReadLine();
列表数据=行。拆分/。。。我该怎么做呢?
字符串艺术家=数据[1];

在解析HTML时,我通常会使用。

您可以尝试:

Row.Split /<tr><td>|<\/td><td>|<\/td><\/tr>/
Row.Split/||/

但这取决于HTML的规则性。它是通过编程生成的,还是由人编写的?如果您确信正则表达式总是以相同的方式生成,则只应使用正则表达式,否则应使用适当的HTML解析器。简短回答:切勿尝试使用正则表达式解析来自野外的HTML。它很可能会回来缠着你

更长的回答:只要您能够绝对、肯定地保证您正在解析的HTML符合给定的结构,您就可以按照Jenni的建议使用string.Split()

string html = "<tr><td>001</td><td>MC Hammer</td><td>Can't Touch This</td></tr>";

string[] values = html.Split(new string[] { "<tr>","</tr>","<td>","</td>" }, StringSplitOptions.RemoveEmptyEntries);

List<string> list = new List<string>(values);
string html=“001MC不能碰这个”;
string[]values=html.Split(新字符串[]{”“,”“,”“},StringSplitOptions.RemoveEmptyEntries);
列表=新列表(值);
单独列出标记会使其更具可读性,而
.removeMptyEntries
会使您的列表中相邻的结束标记和开始标记之间不会出现空字符串


如果这个HTML是来自野生的,或者来自一个可能会改变的工具——换句话说,如果这不仅仅是一次交易——我强烈地鼓励您使用类似的工具。它很容易集成,Intarwebs上有很多示例

如果HTML格式良好,可以使用LINQ to XML:

string input = @"<table>
    <tr><td>001</td><td>MC Hammer</td><td>Can't Touch This</td></tr>
    <tr><td>002</td><td>Tone Loc</td><td>Funky Cold Medina</td></tr>
    <tr><td>003</td><td>Funkdoobiest</td><td>Bow Wow Wow</td></tr>
</table>";

var xml = XElement.Parse(input);

// query each row
foreach (var row in xml.Elements("tr"))
{
    foreach (var item in row.Elements("td"))
    {
        Console.WriteLine(item.Value);
    }
    Console.WriteLine();
}

// if you really need a string array...
var query = xml.Elements("tr")
               .Select(row => row.Elements("td")
                                 .Select(item => item.Value)
                                 .ToArray());

foreach (var item in query)
{
    // foreach over item content
    // or access via item[0...n]
}
字符串输入=@”
我不能碰这个
002Tone LocFunky冷麦地那
003FunkdoobiestBow哇
";
var xml=XElement.Parse(输入);
//查询每行
foreach(xml.Elements(“tr”)中的var行)
{
foreach(第行元素(“td”)中的var项)
{
Console.WriteLine(项值);
}
Console.WriteLine();
}
//如果你真的需要一个字符串数组。。。
var query=xml.Elements(“tr”)
.Select(row=>row.Elements(“td”)
.Select(项=>item.Value)
.ToArray());
foreach(查询中的var项)
{
//foreach超过项目内容
//或通过项[0…n]访问
}

您是否刚刚写了一个关于解析HTML的问题,并将其标记为
regex
?这会给你带来麻烦()。如果有人觉得不舒服,我可以删除这个讨厌的regex标记。话虽如此,但我并不是试图对整个html标记集进行正则化。它只需要匹配三种可能的内容:
。我对正则表达式不太了解,但我很确定它可以在不出现世界末日的情况下满足这一要求。很酷,我不知道字符串。拆分可能需要一个数组,所以这对我来说就足够了。谢谢漂亮的回答!