这两天为了实现一个功能,发贴不少,也得到了各位网友的解答,非常感谢!
这个功能实现还有一个问题,也是关于截取字符的问题,与前面的相比较简单些。问题如下:
  string aa="[Fsx.List:TabelName=admin,IsPage=true,ShowPageNum=true,PageNumAlign=center,Top=8,PageSize=10,WhereStr=(字段名#操作符#值#逻辑运算符),OrderFieldNum=0,Order=0]
  <tr><td>{$manager}</td><td>{$num}</td></tr>
[/Fsx.List]
内容..
[Fsx.List:TabelName=admin,IsPage=true]ffdgdfg[/Fsx.List]"
怎么截取[Fsx.List:中的所有变量值赋值给一个字符串数组,WhereStr的值去除()赋值给一个字符串变量,条件也是[Fsx.List:中变量个数不确定。谢谢!

解决方案 »

  1.   

    怎么还是这个…………
    不知道lz到底想要什么结果。就拿aa这例子来说,lz想得到的字符串数组和WhereStr字符串是什么样的?
      

  2.   

    呵呵,是的。不好意思老是这个字符串。是这样的,我在做一个cms系统,其中前面发的几个贴子都是为了完成这么一个功能,就是当用户输入html代码时,在html中插入我上面设定好的特属标签后。从后台读取html字符,进行"[Fsx.List:TabelName=admin,IsPage=true..]ffdgdfg[/Fsx.List]"分析,把用户插入[Fsx.List中的变量给提取出来应用到程序。因为[Fsx.List:][/Fsx.List]之间的内容也是用户插入的标签,也得提取出来应用到程序,所以之前问的这些就是为了达到这些目的,最后当然还得删除掉[Fsx.List:][/Fsx.List]这个标签吧。这就是整个过程。真的很谢谢你,还有几位网友。但这贴是最后的截取了。还请指点,谢谢!
      

  3.   

    这是前面通过网友解答实现的功能程序如下:
    基本已实现了。
    Regex reg = new Regex(@"(?is)(?<=\[Fsx\.List:\w+?\]).+?(?=\[/Fsx\.List\])");
    Dictionary<string, string> rules = new Dictionary<string, string>();
    foreach (Match m in Regex.Matches(Html, @"(?is)\[Fsx\.List.*?\](.*?)\[/Fsx\.List\]"))
      {
       rules.Add(m.Groups[1].Value, dbprovider.ShowHtml("admin", m.Groups[1].Value, 0, 0, "", "", 0));//这里已实现截取的字符串替换成数据库中的值了,但读取数据库的条件要从[Fsx\.List:的变量中提取,现在没提取出来方法ShowHtml中的变量我全用具体值代替着。
       }
    string result = reg.Replace(Html, new MatchEvaluator(m => { return rules.ContainsKey(m.Value) ? rules[m.Value] : m.Value; }));就差这步了。谢谢!
      

  4.   

    就是要提取如:[Fsx.List:TabelName=admin,IsPage=true,ShowPageNum=true,PageNumAlign=center,Top=8,PageSize=10,WhereStr=(字段名#操作符#值#逻辑运算符),OrderFieldNum=0,Order=0]
    中的TableName的值admin,其他变量一样只截取变量值:true,ture,center,8,10...
      

  5.   


    string str="[Fsx.List:TabelName=admin,IsPage=true,ShowPageNum=true,PageNumAlign=center,Top=8,PageSize=10,WhereStr=(字段名#操作符#值#逻辑运算符),OrderFieldNum=0,Order=0]
      <tr><td>{$manager}</td><td>{$num}</td></tr>
    [/Fsx.List]
    内容..
    [Fsx.List:TabelName=admin,IsPage=true]ffdgdfg[/Fsx.List]";
    string pattern=@"(?i)(\w+)=\(?([\w#\u4e00-\u9fa5]+)\)?";
    Dictionary<string,string> dic=new Dictionary<string,string>();
    foreach(Match m in Regex.Matches(str, pattern))
    {
      dic.Add(m.Groups[1].Value,m.Groups[2].Value);//dic格式就是这种(key=TabelName,Value=admin)
    }
      

  6.   

    程序员何苦为难程序员
    你传个json 传个xml 传个序列化都比现在爽
      

  7.   

    整个功能终于全部实现了。非常感谢Chinajiyong和ParanoidKing及各位网友。正则很牛很强大。