他那方式为研究过了.不方便扩展. 经过我一天的研究终于搞明白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没几天,感激不尽.
标签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|>*]";//属性
{
这里如何用正则或者属性的变量或者字符呢??
}
{
这里如何获取正则的数字或者字符的属性呢?然后赋值给变量就实现了
}
经过我一天的研究终于搞明白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没几天,感激不尽.
{
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);//输出标签属性参数
}//////以上为手打,有错自己解决