在ASP.NET中提取部分文本

时间:2013-08-14 09:38:05

标签: asp.net .net vb.net asp.net-4.5

我需要使用一对包含在其中的标记来提取String的子集。例如,给定以下字符串:

  

Lorem ipsum dolor坐下来,精神上的精神。   <!--extract--> Sed nec luctus magna,ac tincidunt metus。保护者   sodales iaculis ipsum sed blandit。 <!--/extract--> Quisque tincidunt   nulla sapien,非faucibus turpis aliquam at。

如何提取介于两者之间的所有内容(而不是标签本身)? String每次都会有不同的长度,但始终包含标记。

我一直在捣乱String.SubString(),但我正在努力可靠地计算开始/结束指数。请注意,开始/结束标记始终具有特定值以允许它们被定位。

提前致谢。

2 个答案:

答案 0 :(得分:1)

我总是发现从所需字符串的两边修剪时Substring两次更容易

string myString = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. <!--extract-->Sed nec luctus magna, ac tincidunt metus. Maecenas sodales iaculis ipsum sed blandit.<!--/extract--> Quisque tincidunt nulla sapien, non faucibus turpis aliquam at.";
myString = myString.Substring(myString.IndexOf("<!--extract-->") + "<!--extract-->".Length);
myString = myString.Substring(0, myString.IndexOf("<!--/extract-->"));

或者,在一次通话中做同样的事(uglier)

string myString = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. <!--extract-->Sed nec luctus magna, ac tincidunt metus. Maecenas sodales iaculis ipsum sed blandit.<!--/extract--> Quisque tincidunt nulla sapien, non faucibus turpis aliquam at.";
myString = myString.Substring(myString.IndexOf("<!--extract-->") + "<!--extract-->".Length, myString.IndexOf("<!--/extract-->") - myString.IndexOf("<!--extract-->") - "<!--extract-->".Length);

答案 1 :(得分:1)

此代码将帮助您实现您的要求

    string s="adipiscing elit.<!--extract-->Sed nec luct<!--/extract-->"
    string p = "<!--extract-->";
    string q = "<!--/extract-->";
    int a = s.IndexOf("<!--extract-->");

    int b = s.IndexOf("<!--/extract-->");
    string result= s.Substring(a + p.Length, b - (a + p.Length));