例:
标签1{文章列表(10,35,4,10)}
标签2{图片列表(10,1,300,250)}生成静态页的时候正则如果替换有属性的标签比如图片列表属性为(10条,分类1,300高,250宽)谁能给出实例代码??感激不尽.

解决方案 »

  1.   

    别模仿asp程序的标签。
    标签1{文章列表(10,35,4,10)} 这种标签除了自己谁看得懂啊。我的CMS里面用
              <TW:TopMonthDown Rows="10" Length="32" ModelID=1>
             <ItemTemplet>
              <li><a href="@StaticURL@" title="@SoftName@ @SoftVersion@">@ShortTitle@</a></li>
              </ItemTemplet>
            </TW:TopMonthDown>猜也能猜出来属性的意思了。        /// <summary>
            /// 标签正则表达式
            /// </summary>
            const string 标签正则表达式 = @"<TW:{0}(.*?)>([\S\s]*?)</TW:{0}>";
            /// <summary>
            /// 属性正则表达式
            /// </summary>
            const string 属性正则表达式 = @"\s*{0}\s*=\s*""*(.*?)""*[\s|>*]";//属性
      

  2.   

    这种方式比较方便不是模仿ASP2楼我看了好几天都没搞太懂{文章列表(10,35,4,10)} 正则如何获取后面的数字或者字符属性.并赋给变量.({文章列表(10,35,4,10)},文章列表处理函数())文章列表处理函数()
    {
    这里如何用正则或者属性的变量或者字符呢??
    }
      

  3.   

    只有自己顶了.~~~~~~~~~~2楼我看了好几天都没搞太懂 {文章列表(10,35,4,10)} 正则如何获取后面的数字或者字符属性.并赋给变量. 页面模板=Replace({文章列表(10,35,4,10)},文章列表处理函数()) 文章列表处理函数() 

    这里如何获取正则的数字或者字符的属性呢?然后赋值给变量就实现了
    }
      

  4.   

    {文章列表(.*?)>([\S\s]*?) }很简单的正则表达式,就改改开头和结尾的符号不会正则表达式根本作不了这些功能,你先停下来,学习一下正则表达式。
      

  5.   

    他那方式为研究过了.不方便扩展.
    经过我一天的研究终于搞明白ASP里面是怎么来的啦..有两个步骤才可以处理完.大家看ASP代码
    标签{$art(1,2,3)}
    <%
            '**************************************************
    '函数名:ReplaceLableFlag
    '作  用:去除标签{$},并分组以将标签参数用","隔开
    '          示例: km=ReplaceLableFlag("{$Test("par1","par2","par3")}")
    '          结果     km=Test,Par1,Par2,Par3
    '参  数: Content  ----待替换内容
    '返回值:返回用","隔开的字符串
    '**************************************************
    '经过这个函数把{$art(4,2,3)}改变成art,4,2,3
    Function ReplaceLableFlag(Content)
    Dim regEx, Matches, Match, TempStr
    Set regEx = New RegExp
    regEx.Pattern = "{\$[^{\$}]*}"
    regEx.IgnoreCase = True
    regEx.Global = True
    Set Matches = regEx.Execute(Content)
    ReplaceLableFlag = Content
    For Each Match In Matches
    On Error Resume Next
    TempStr = Match.Value
    TempStr = Replace(TempStr, Chr(13) & Chr(10), "")
    TempStr = Replace(TempStr, "{$", "")
    TempStr = Replace(TempStr, "}", "")
    TempStr = Left(TempStr, InStr(TempStr, "(") - 1) & "," & Mid(TempStr, InStr(TempStr, "(") + 1)
    TempStr = Left(TempStr, InStrRev(TempStr, ")") - 1)
    TempStr = Replace(TempStr, """", "")
       If Err.Number = 0 Then
       ReplaceLableFlag = Replace(ReplaceLableFlag, Match.Value, ChangeLableToFunction(TempStr))
       End If
    Next
    End Function
    '这个函数来处理相关参数
    Function ChangeLableToFunction(LabelContent)
        Dim L_Arr:L_Arr = Split(LabelContent, ",")
    If L_Arr(0) = "" Then  ChangeLableToFunction = "": Exit Function
    Select Case (L_Arr(0)) 
      Case "art" 
      ChangeLableToFunction = art(L_Arr(1),L_Arr(2),L_Arr(3))

    Case Else  ChangeLableToFunction = "无标签"
    End Select

    End Function
    '这个函数就是内容的处理了
    Function art(artclass,arta,artb)
    response.Write artclass&arta&artb'输出标签属性参数
    end FunctionReplaceLableFlag("{$art(4,2,3)}")'这里应当是模板文件这只是测试标签提取属性过程.
    '麻烦高手帮我转成c#我初学不太会.
    %>
    winner2050 你感觉这种方法是否比你的方便.麻烦高手帮我把那两个转换过程能改写成C#吗??立刻分数追加.
    我才学.net没几天,感激不尽.
      

  6.   

    private string ReplaceLableFlag(Content)
    {
       return Content.Replace("{$","").Replace("(",",").Replace(")}","");
    }//这个函数来处理相关参数
    private string ChangeLableToFunction(LabelContent)
    {
        sring[] L_Arr = LabelContent.Split(',');
        if(L_Arr[0] == "")
        {
            return "";
        }
        Switch (L_Arr[0])
        {
            case "art":
                return art(L_Arr[1],L_Arr[2],L_Arr[3]);
                break;
            default :
                return "无标签";
        }
    }
                    //这个函数就是内容的处理了
            private void art(string artclass,string arta,string artb)
    {
    Response.Write(artclass+arta+artb);//输出标签属性参数
    }//////以上为手打,有错自己解决