Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 解析文本的一部分,该部分类似于c中的html表#_C#_Parsing_Text - Fatal编程技术网

C# 解析文本的一部分,该部分类似于c中的html表#

C# 解析文本的一部分,该部分类似于c中的html表#,c#,parsing,text,C#,Parsing,Text,我有一个自由文本,其中可能包含类似html的表定义,例如: 这是自由文本。。。。。 更多免费文本。。。 表开始 *行开始* 单元格1内容##单元格2内容 第3单元内容 行结束*表结束* 更多包含更多表定义的自由文本 我正在寻找从C#中的此类文本解析表的最佳方法。我已经读到正则表达式不适合这样的文本。有人能帮上忙吗 提前感谢。一旦将表格提取到字符串中 请使用Server.HtmlEncode对包含html的文本进行编码您可以这样尝试: string input = @"free t

我有一个自由文本,其中可能包含类似html的表定义,例如:

这是自由文本。。。。。 更多免费文本。。。 表开始 *行开始*

单元格1内容##单元格2内容 第3单元内容 行结束*表结束* 更多包含更多表定义的自由文本

我正在寻找从C#中的此类文本解析表的最佳方法。我已经读到正则表达式不适合这样的文本。有人能帮上忙吗


提前感谢。

一旦将表格提取到字符串中


请使用Server.HtmlEncode对包含html的文本进行编码

您可以这样尝试:

        string input = @"free text ... 
        <table><tr><td>
            <table><tr><td>test</td></tr></table>
        </td></tr></table> 
        more free text";
        string inputWithRoot = String.Format("<root>{0}</root>", input);

        XElement el = XElement.Parse(inputWithRoot);
        var tables = el.Descendants("table");

        foreach (XElement table in tables)
        {
            Console.WriteLine(table.ToString());
            Console.WriteLine();
        }
string input=@“自由文本。。。
测试
更多自由文本”;
string inputWithRoot=string.Format(“{0}”,输入);
XElement el=XElement.Parse(inputWithRoot);
var表=el.子体(“表”);
foreach(表中的XElement表)
{
Console.WriteLine(table.ToString());
Console.WriteLine();
}

这可能有助于uThanks,但我的文本不是html。它是自由文本,可能包含具有html结构但具有不同标记的表定义。所以我不能使用HTMLAgilityPack。定义表的标记可以是:some value。开始标记和结束标记不一定相同。所以我认为它不会起作用,尽管解决方案很好。