|
| |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
一、处理字符串 .NET 框架类(或System类)提供了大量可在构造.NET应用时使用的核心功能,这些功能适用于任何语言环境。本文的第一部分介绍了程序集、名称空间等基本概念以及System.Math和System.Random类。这是本文的第二部分,接着讨论其他几个很有用的类:System.String,System.Array,System.DateTime。 值得指出的是,正如本文前面所提到的,当我们用VB.NET作为编程语言时,我们经常面临这样一种选择:是使用VB.NET语言内建的功能,还是使用等价的System类功能。在处理数组、日期/时间、字符串数据时,我们就面临这种选择。假如你曾经是一个VB 6.0程序员,你的第一个选择可能会是经过检验的、确实有效的老方式。但是,假如有可能,你最好还是改掉老习惯、采用新的.NET System类。为什么呢?因为采用System类能够使你的代码更轻易移植到其他.NET语言以及未来的VB.NET版本。 System.String类提供了丰富的字符串处理能力。使用System.String类,我们可以:确定字符串的长度,查找子串,改变字符串的大小写,比较两个字符串,分割字符串,等等。 确定字符串长度使用的是Length属性。例如,在下面的代码中,intLength的值将是4: Dim strColor As String = "blue" Dim intLength As Integer intLength = strColor.length 我们用IndexOf方式从字符串找出第一个匹配的子串。假如能够找到子串,IndexOf方式返回子串的开始位置(第一个字符的开始位置为0);假如不能找到,则IndexOf返回-1。IndexOf的查找是大小写敏感的。IndexOf是一个被重载(Overload)的方式,它答应传入的参数包括:Char类型的字符,String类型的字符串,Char类型的字符数组。下面这个IndexOf.aspx页面示范了三种不同参数类型IndexOf方式的运用: <%@ Page Language="vb" Explicit="True"%> <head> <title>System.String实例</title> <script language="vb" runat ="server"> Sub Page_Load(Src as Object, E as EventArgs) Dim chrG As Char = "G" Dim strWord As String = "for" Dim chrVowels As Char() = {"a","e","i","o","u"} Dim strPhrase As String = _ "One small step for man, one giant leap for mankind." Dim i As Integer lblOutput.Text &= "<br />strPhrase = " & strPhrase lblOutput.Text &= "<br />Position of chrG = " _ & strPhrase.IndexOf(chrG) lblOutput.Text &= "<br />Position of strWord = " _ & strPhrase.IndexOf(strWord) lblOutput.Text &= "<br />Position of chrVowels = " _ & strPhrase.IndexOf(chrVowels) End Sub </script> </head> <body> <asp:label id="lblOutput" runat ="server" /> </body> </html> 这个页面的运行结果如下: IndexOf答应指定两个用来限制搜索的可选参数,它们分别代表搜索字符串的起始和结束位置。例如,下面的代码对chrVowels的搜索限制在第10到20个字符之间: strPhrase.IndexOf(chrVowels, 10, 20) LastIndexOf方式类似于IndexOf方式,但它搜索的是子串的最后一次出现。例如,假如你修改IndexOf.aspx页面,用LastIndexOf方式来取代IndexOf方式,则strWord的位置将是39而不是15。 使用System.String的ToUpper和ToLower方式可以把字符串分别改成全部大写或者全部小写。例如: strUpper = "This is a mixed case sentence".ToUpper() strLower = "This is a mixed case sentence".ToLower() 从这个例子可以看出,System.String的属性和方式既可以在字符串变量中应用,也可以直接在字符串文本中应用。 你可以用Compare方式比较两个字符串是否一样。假如两个字符串一样,Compare方式返回0;假如第一个字符串小于第二个字符串,Compare返回一个负数;假如第一个字符串大于第二个字符串,Compare方式返回一个正数。Compare是一个静态方式(参见本文前面关于静态方式和实例方式的说明)。默认情况下,Compare对字符串的比较是大小写敏感的,且不考虑地区关系。例如,下面对Str1和Str2的比较将返回-1,它表示Str1小于Str2: Dim str1 As String = "abcd.com" Dim str2 As String = "abcd.Com" answer = String.Compare(str1, str2) 我们可以向Compare传入第三个可选的参数。假如第三个参数指定为True,则字符串比较操作忽略大小写,比如下面的代码中answer的值将是0,即两个字符串相等。 answer = String.Compare(str1, str2, True) 正如IndexOf方式,Compare也是一个被重载的方式。我们可以向Compare方式传入第四个参数要求进行地区相关的比较;或者,我们也可以指定字符的起始和结束位置使得比较只对字符串的一部分进行。请参见.NET Framework SDK文档了解具体信息。Split方式把字符串分割成一个由子串构成的数组。使用Split方式时,我们必须指定用来分割字符串的、Char类型的分割字符。下面的Split.aspx页面示范了Split方式的应用: <%@ Page Language="vb" Explicit="True"%> <head> <title>Split实例</title> <script language="vb" runat ="server"> Sub Page_Load(Src as Object, E as EventArgs) Dim strASP As String = _ "ASP.NET is the next generation of Active Server Pages." Dim strWords() As String Dim i As Integer strWords = strASP.Split(" ") For i = strWords.GetLowerBound(0) to strWords.GetUpperBound(0) lblOutput.Text &= i & ": " & strWords(i) & "<br />" Next End Sub </script> </head> <body> <asp:label id="lblOutput" runat ="server" /> </body> </html> Split.aspx的输出结果如下: 前面我们讨论了String类部分属性和方式的应用。String还包括许多其他成员,比如:从数组构造出字符串,把字符串中的一个字符替换成其他字符,删除字符串前面或者后面的空白字符,等等。 二、操作数组 我们可以通过System.Array类用各种方式处理数组。与前面的几个类相同,System.String类的许多功能重复了VB语言所具有的功能。但Array类也增加了一些传统VB语言不具备的功能,比如搜索和排序数组。 Array类的GetLowerBound和GetUpperBound方式用于确定数组指定维的下界和上界。下面这个语句来自Split.aspx(参见前面的例子),它通过GetLowerBound和GetUpperBound方式确定strWords数组的边界: For i = strWords.GetLowerBound(0) to strWords.GetUpperBound(0) System.Array的Sort静态方式能够对一维数组的内容排序。Sort方式对数组的排序是大小写敏感的,而且它不能对一维以上的数组排序。调用Sort方式的语法下: Array.Sort(array_name) 对于一维数组,我们还可以用Reverse方式颠倒数组元素的次序。Reverse方式的语法类似于Sort方式: Array.Reverse(array_name) 下面的代码(来自ArraySort.aspx示例页面)示范了Sort和Reverse方式的应用: Dim strTerms() As String = {"JScript", "VB", "ASP", "ASP.NET", ".NET"} Dim i As Integer lblOutput.Text &= "Original Array<br />" For i = strTerms.GetLowerBound(0) to strTerms.GetUpperBound(0) lblOutput.Text &= i & ": " & strTerms(i) & "<br />" Next Array.Sort(strTerms) lblOutput.Text &= "<br />After Sorting<br />" For i = strTerms.GetLowerBound(0) to strTerms.GetUpperBound(0) lblOutput.Text &= i & ": " & strTerms(i) & "<br />" Next Array.Reverse(strTerms) lblOutput.Text &= "<br />After Reversing<br />" For i = strTerms.GetLowerBound(0) to strTerms.GetUpperBound(0) lblOutput.Text &= i & ": " & strTerms(i) & "<br />" Next ArraySort.aspx页面的输出结果如下: System.Array方式支持用IndexOf和LastIndexOf方式对一维数组进行搜索,这两个方式与System.String类的同名方式类似。用IndexOf和LastIndexOf方式搜索数组的语法如下: answer = Array.IndexOf(array_name, search_string) answer = Array.LastIndexOf(array_name, search_string) 这两个方式分别返回搜索字符串第一次和最后一次匹配的位置;假如不能找到,则返回值是-1。这种搜索是大小写敏感的。例如,在下面的代码中,answer将是2,它表示字符串“ASP”是strTerms数组的第三个元素。 Dim strTerms() As String = {"JScript", "VB", "ASP", "ASP.NET", ".NET"} answer = Array.IndexOf(strTerms, "ASP") 三、处理日期/时间数据 System.DateTime类提供了许多处理DateTime值的方式。要创建一个DateTime值,我们只需声明一个DateTime类型的变量,并通过“#”分隔符赋予它一个DateTime常量,如下所示: Dim SeattleQuake As DateTime = #02/28/01 10:54# System.DateTime类一个很大的长处是:我们能够通过它的属性异常方便地分析日期/时间值。这些DateTime类属性的含义异常明显,它们是:Year,Month,Day,DayOfWeek,DayOfYear,Hour,Minute,Second,Millisecond,Ticks,等。每个Ticks等于100个纳秒(毫微秒)。例如,在下面的代码中,answer的值将等于10: answer = SeattleQuake.Hour 我们还可以用Date和TimeOfDay属性获得DateTime数据的日期或者时间部分。TimeOfDay属性返回的是一个TimeSpan值,它表示已流逝的按ticks计的时间。可以想象,利用TimeSpan值的属性我们可以分析出TimeSpan时间的各个部分。请参见.NET Framework SDK文档了解具体信息。 System.DateTime类还提供了几个增加(或者减少)DateTime值某一部分的方式,它们是:AddYears,AddMonths,AddDays,AddHours,AddMinutes,AddSeconds,AddMilliseconds,AddTicks。 例如,下面的代码对指定的日期(BDay)进行加1年、减1年操作: Dim BDay As DateTime = #6/25/2001 12:00# Dim NextBDay As DateTime Dim LastBDay As DateTime NextBDay = TheDate.AddYears(1) LastBDay = TheDate.AddYears(-1) 返回类别: 教程 上一教程: 使用.net Remtoing进行并行计算 下一教程: ASP.NET中Cookie编程的基础知识(2) 您可以阅读与"转贴自JoyASP:.NET框架(二)"相关的教程: · 转贴自JoyASP:.NET框架(一) · 第十二章 委托[《.net框架程序设计》读书笔记] · 初级:.net框架下的MD5 · 第七章 类型成员及其访问限定[《.NET框架程序设计》读书笔记] · VB.NET如何在没有.NET框架的机器上运行 |
| 快精灵印艺坊 版权所有 |
首页 |
||