我的代码中有一个正则表达式,用于匹配表单POST中的键(控制ClientId)。我循环遍历表单数据中的所有键,并在找到匹配项时执行所需的操作。
然而,正则表达式匹配的次数比我需要的次数多。这可以在每个请求上运行,如果执行不必要的代码,也可以。
Match match = Regex.Match(key.ToLower(), @"(?!\$)(?:[a-z0-9]+)$",
RegexOptions.Compiled);
核心匹配的示例字符串
master$maincontentplaceholder$ucsearchresults$hdnvalue
master$maincontentplaceholder$ucsearchresults$hdnvalue2
master$maincontentplaceholder$ucsearchresults$hdnvalue3
然后我有一个开关语句,其中包含与控件ID匹配的案例
case: "hdnvalue"
case: "hdnvalue2"
case: "hdnvalue3"
表单还返回了大量不需要处理的额外键。如果我可以在正则表达式中排除这些匹配,那将是很好的。 (请注意额外的客户端ID级别$ucfilter
)
master$maincontentplaceholder$ucsearchresults$ucfilter$hdnvalue
master$maincontentplaceholder$ucsearchresults$ucfilter$hdnvalue2
master$maincontentplaceholder$ucsearchresults$ucfilter$hdnvalue3
答案 0 :(得分:1)
你必须描述更正式接受的格式,这个正则表达式将通过你给出的标准:
^([a-z0-9]+\$){3}[a-z0-9]+$
答案 1 :(得分:0)
如果你没有/没有/使用正则表达式,你可以用LastIndexOf(“$”)做得更好
using System;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
string text = "master$maincontentplaceholder$ucsearchresults$ucfilter$hdnvalue";
string id = text.Substring(text.LastIndexOf("$") + 1);
Console.WriteLine(id);
Console.ReadLine();
}
}
}