基于过程和基于表达式方法的比较 一般情况下,使用规则表达式的用户可以分为以下二大类:第一类用户尽量不使用规则表达式,而是使用过程来执行一些需要重复的操作;第二类用户则充分利用规则表达式处理引擎的功能和威力,而尽可能少地使用过程。 对于我们大多数用户而言,最好的方案莫过于二者兼而用之了。我希望这篇文章能够说明.NET语言中regexp类的作用以及它在性能和复杂性之间的优、劣点。 基于过程的模式 我们在编程中经常需要用到的一个功能是对字符串中的一部分进行匹配或其他一些对字符串处理,下面是一个对字符串中的单词进行匹配的例子:
| string text = "the quick red fox jumped over the lazy brown dog."; System.Console.WriteLine("text=[" + text + "]"); string result = ""; string pattern = @"\w+|\W+"; foreach (Match m in Regex.Matches(text, pattern)) { // 取得匹配的字符串 string x = m.ToString(); // 如果第一个字符是小写 if (char.IsLower(x[0])) // 变成大写 x = char.ToUpper(x[0]) + x.Substring(1, x.Length-1); // 收集所有的字符 result += x; } System.Console.WriteLine("result=[" + result + "]"); |
正象上面的例子所示,我们使用了C#语言中的foreach语句处理每个匹配的字符,并完成相应的处理,在这个例子中,新创建了一个result字符串。这个例子的输出所下所示:
|