用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心编程技巧Visual C++

理解VC# 2005中的字符串和正规表达式

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-03-16 20:37:43


  (二) 从输入中提取数据

  正规表达式的其它常见的用法是,根据表达式分析文本以及使用之来从用户输入中提取数据(称作组匹配)。

  正规表达式中包括一个特征叫组。一个组允许你把一个命名标识放到该正规表达式的一个特定节中。当你调用Match()来针对模式比较输入数据时,其结果实际上把匹配分成一些组,允许你提取匹配每一个组的输入的部分。

  例如,在前面的例子中,我们创建了一个username,它允许我们提取在一个电子邮件地址中位于@符号前的所有数据。然后,当执行一个匹配时,我们能够使用正规表达式的命名组从输入中提取该username。

  下列代码显示怎样从一个用户在控制台输入的URL中提取协议名字和端口号。正规表达式的伟大在于,它们使用自己的语言;因此,它们不必依赖于C、C++、C#、VB.NET或任何其它语言。在下列代码中的正规表达式来自于一个MSDN例子:

string urlPattern = @"^(?<proto>\w+)://[^/]+?(?<port>:\d+)?/";
Console.WriteLine();
Console.Write("Enter a URL for data parsing: ");
string url = Console.ReadLine();
Regex urlExpression = new Regex(urlPattern, RegexOptions.Compiled);
Match urlMatch = urlExpression.Match(url);
Console.WriteLine("The Protocol you entered was " + urlMatch.Groups["proto"].Value);
Console.WriteLine("The Port Number you entered was " + urlMatch.Groups["port"].Value);

  当你使用不带有一个端口号的URL运行前面的代码时,你会注意到,你没有得到任何组值。这是因为,该输入根本不匹配正规表达式。当不存在匹配时,你显然无法从给定的组中提取有意义的数据。当你使用匹配该正规表达式的端口号的URL运行前面的代码时,你将得到如下列文本所示的输出结果:

Entera URL for data parsing: http://server.com:2100/home.aspx
The Protocol you entered was http
The Port Number you entered was :2100

  三、 总结

  在本文中,你已看到现在你有了自己的字符串例程库。借助于C#和.NET框架,字符串成为该基类库的一个本机组成部分,并且提供给你大量的工具方法用于实现字符串的比较,操作,格式化等操作。你还看到,StringBuilder类向你提供了一组易于使用的工具方法以便动态地构建字符串而不会带来本地字符串连接的性能损失。

  最后,本文向你简短介绍了正规表达式的威力以及Regex类是如何把这些功能整合到一起的。通过阅读本文和试验相应的示例代码后,你应该熟悉一些字符串和正规表达式操作以使你的应用程序更为有力。


上一页  [1] [2] [3] [4] 

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:28,546.88000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号