理解VC# 2005中的字符串和正规表达式
string sourceString = "Mary Had a Little Lamb"; string sourceString2 = " Mary Had a Little Lamb "; Console.WriteLine(sourceString.ToLower()); Console.WriteLine(string.Format("The string '{0}' is {1} chars long", sourceString,sourceString.Length)); Console.WriteLine(string.Format("Fourth word in sentence is : {0}", sourceString.Split(' ')[3])); Console.WriteLine(sourceString2.Trim()); Console.WriteLine("Two strings equal? " + (sourceString == sourceString2.Trim())); |
前面的代码输出如下所示结果:
mary had a little lamb The string 'Mary Had 一个 Little Lamb' is 22 chars long. Fourth word in sentence is : Little Mary Had a Little Lamb Two strings equal? True |
(四) StringBuilder入门
如前面所提及,字符串是常量。这意味着,当你把两个字符串连接成一个新的字符串时,有一段时间CLR在内存中有三个字符串。因此,例如,当你连接实现如下代码所示连接时:
string a = "Hello"; string b = "World"; string c = 一个 + " " + c; |
实际上,在内存共有四个字符串,包括空格。为了缓和这个字符串连接性能问题并且提供给你一个工具使连接更容易些,.NET框架中提供了一个类StringBuilder。
通过使用StringBuilder动态地创建可变长度的字符串,你克服了CLR字符串中常量字符串这一事实;而且,这样以来,该代码变得更具可读性。下列代码展示了StringBuilder的使用:
StringBuilder sb = new StringBuilder(); sb.Append("Greetings!\n"); formatString = "{0:$#,###0.00;($#,###0.00);Zero}"; dVal = 129.99; sb.AppendFormat(formatString, dVal); sb.Append("\nThis is a big concatenated string."); Console.WriteLine(sb.ToString()); |
前面的代码输出如下所示结果:
Greetings! $129.99 This is a big concatenated string. |
注意,前面代码中的"\n"把一个换行符字符插入到字符串中。
二、 使用正规表达式
正规表达式允许快速有效地处理文本。被处理的文本小到一个电子邮件地址,大到一个多行的输入框内容。正规表达式的使用不仅允许你使用一个定义模式来校验文本,而且还允许你从匹配一个给定模式的文本中提取数据。
你可以把一个正规表达式当作是一种特别强有力的通配符。当我们看到象"SAMS*"这样的表达式时,我们都会熟悉通配符,任何以单词SAMS开头的内容都是一个匹配的表达式。正规表达式能为你提供远远超过通配符的强有力的控制功能。
本节先向你简短地介绍一下.NET框架中提供的支持使用正规表达式的类。有关正规表达式的更多信息,你可以参考《正规表达式快速参考手册》或《精通正规表达式》的第二版。这些书将提供给你需要的信息以便创建你自己的正规表达式,而且还提供了常用正规表达式的一组列表。至于正规表达式本身已经超出本文的讨论范围。
(一) 校验输入
正规表达式的一种最常用的场所是用于使用一些预先定义的格式(例如,强制建立的规则用于确保口令中包含特定的使其很难被拆断的字符)校验用户输入。这些规则被典型地定义为正规表达式。正规表达式也常用于校验简单的输入,例如电子邮件地址和电话号码。
.NET框架提供的操作正规表达式的一个关键类是RegEx类。这个类提供一个静态的方法IsMatch,它返回一个布尔值指示是否指定的输入字符串匹配一个给定的正规表达式。
在下列代码中,使用一个普通正规表达式来测试电子邮件地址的有效性:
string emailPattern = @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)[ccc] (([\w-]+\.)+))([a-zA-Z]{2,4}[0-9]{1,3})(\]?)$"; Console.Write("Enter an e-mail address:"); string emailInput = Console.ReadLine(); bool match = Regex.IsMatch(emailInput, emailPattern); if (match) Console.WriteLine("E-mail address is valid."); else Console.WriteLine("Supplied input is not a valid e-mail address."); |
如果你搞不清楚这个正规表达式,别担心。电子邮件模式的基本思想是,它需要一些数字字母字符,后面跟着一个@符号,然后是一些字符组合,再后面跟着一个".",再往后至少跟着两个字符。你可以以不同的输入试验前面的代码来看一下你得到什么结果。即使你不理解该正规表达式本身,只要知道它们的存在,那么你就可以把它使用于你的应用程序中来校验输入。
天极yesky
Tags:
作者:佚名评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论