我需要使用一对包含在其中的标记来提取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()
,但我正在努力可靠地计算开始/结束指数。请注意,开始/结束标记始终具有特定值以允许它们被定位。
提前致谢。
答案 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));