日期:2014-05-17  浏览次数:20441 次

C#截取字符串中首尾
正在做一个标签替换的功能,情况有点复杂。

[Fsx.List:TabelName=admin,IsPage=true,ShowPageNum=true] 说明:(里面属性个数不确定)

 内容...

[/Fsx.List]

有两个问题:

一、请问怎么截取[Fsx.List...][/Fsx.List]之间的内容,条件是[Fsx.List...]中的属性个数不确定,有时多有时少;

二、页面中可出现一个或多个[Fsx.List:][/Fsx.List]标签该如何循环截取[Fsx.List...][/Fsx.List]之间的内容(也就是问题一,有多个[Fsx.List:][/Fsx.List]时怎么截取之间的内容)。谢谢!


------解决方案--------------------
1. 正则:
 str=Regex.Match(yourstr,"(?is)\[Fsx\.List.*?\](.*?)\[/Fsx\.List\]").Groups[1].Value;
2.
foreach(Match m in Regex.Matches(yourstr,"(?is)\[Fsx\.List.*?\](.*?)\[/Fsx\.List\]"))
{
//m.Gropus[1].Value就是你想要的
}
------解决方案--------------------
1、用正则能够给解决你的问题
(?is)(?<=\[Fsx\.List:[^[]*?\]).*?(?=\[/Fsx\.List\])
C# code

string str= @"[Fsx.List:TabelName=admin,IsPage=true,ShowPageNum=true] 
说明:(里面属性个数不确定)

 内容...

[/Fsx.List]";
string pattern=@"(?is)(?<=\[Fsx\.List:[^[]*?\]).*?(?=\[/Fsx\.List\])";
str=Regex.Match(str,pattern).Value;

------解决方案--------------------
[/Fsx.List]";
string pattern=@"(?is)(?<=\[Fsx\.List:[^[]*?\]).*?(?=\[/Fsx\.List\])";
str=Regex.Match(str,pattern).Value;