实例2-22 按值传参和按地址传参的比较
该实例实现步骤如下。
1 创建窗体
在本章的项目chapter2中,右键单击解决方案资源管理器中项目名下面对应节的文件夹“过程”,在弹出菜单中选择“添加”→“Windows窗体”菜单命令,在弹出的对话框中输入窗体名BVRFrm,单击“添加”按钮完成窗体的创建。
2 添加控件
在窗体上添加两个TextBox文本框,用来让用户输入两个数。
在窗体上添加两个按钮,在按钮的单击事件中实现两个数按值和按地址传递方式的交换。
3 添加代码
双击窗体,在窗体类中添加如代码2-27所示代码。
代码2-27 BVRFrm.vb
01 Public Class BVRFrm 02 Sub permuteByVal(ByVal a As Integer, ByVal b As Integer) 03 Dim t As Integer 04 t = a 05 a = b 06 b = t 07 End Sub 08 Sub permuteByRef(ByRef a As Integer, ByRef b As Integer) 09 Dim t As Integer 10 t = a 11 a = b 12 b = t 13 End Sub 14 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 15 permuteByVal(Me.TextBox1.Text, Me.TextBox2.Text) 16 MsgBox("用传值方式交换两数后的结果:" & Me.TextBox1.Text & "," & Me.TextBox2.Text) 17 End Sub 18 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 19 permuteByRef(Me.TextBox1.Text, Me.TextBox2.Text) 20 MsgBox("用传地址方式交换两数后的结果:" & Me.TextBox1.Text & "," & Me.TextBox2.Text) 21 End Sub
代码2-27的执行步骤如下:
① 第2行代码定义了一个Sub过程,名称为permuteByVal,其参数用ByVal关键字定义,实现对两个参数的传值方式;
② 第3行到第6行代码将两个参数的值交换;
③ 第8行代码定义了另一个Sub过程,名称为permuteByRef,其参数用ByRef关键字定义,实现对两个参数的传地址方式;
④ 第9行到第13行代码实现两个参数交换;
⑤ 第15行代码调用permuteByVal(),实现按传值方式交换两个数;
⑥ 第16行代码用弹出对话框显示交换后的两个数;
⑦ 第19行代码调用permuteByRef(),实现按传地址方式交换两个数;
⑧ 第20行代码用弹出对话框显示交换后的两个数。
4 运行结果
按F5 键,运行程序,以输入10,99 为例,单击“按值”按钮,即实现按值传递参数,则其运行结果如图2-29所示。
图2-29 按值传参运行结果
在图2-29中的第二个图中单击“确定”之后,回到窗体界面,在窗体上再单击“按地址”按钮,即实现按地址传递参数,则其运行结果如图2-30所示。
图2-30 按地址传参运行结果
2.5.6 内部函数
VB有许多内部函数,它们对于减轻开发负担很有用。本节将给出常用的函数,在编写应用程序时它们是非常重要的。.NET架构有许多的系统名字空间,它们提供了内部函数,而且Microsoft.VisualBasic的名字空间也有可以在应用程序中使用的函数。本节将介绍下列名字空间的函数和性质,关于VB.NET函数的完整列表,请参考Platform SDK部分。
1.Microsoft.VisualBasic.Conversion名字空间
Microsoft.VisualBasic.Conversion名字空间里主要提供处理基本的字符串和数字转换函数。
(1)Fix和Int函数
Fix和Int函数都是用于删除一个数的小数部分。对于正数,两函数的作用相同,都是小数部分被删除,不进行数字的四舍五入;当处理负数时,Int函数返回小于或等于该数的第一个负整数,而Fix函数返回大于与或等于该数的第一个负正数。其语法分别如下:
Fix(Number) Int(Number)
其中,Number是必选项,表示一个Double类型的数字或任何有效的数值表达式。如果Number包含Nothing,则返回Nothing。
示例如下:
Dim a, b, c, d As Single a = 12.5 b = 12.5 c = -11.4 d = -11.4 MsgBox(CStr(Fix(a)))'返回 12 MsgBox(CStr(Int(b)))'返回 12 MsgBox(CStr(Fix(c)))'返回 -11 MsgBox(CStr(Int(d)))'返回 -12
(2)Hex函数
Hex函数返回一个数的十六进制值的字符串。传递给Hex函数的值可以是Short,Byte, Integer,Long或Object数据类型。语法如下:
Hex(Number)
其中,Number是必选项,表示任何有效的数值表达式或String表达式。
示例如下:
MsgBox(Hex(10))'返回A MsgBox(Hex(16))'返回 10 MsgBox(Hex("T"))'错误:从字符串“T”到类型“Long”的转换无效
(3)Oct函数
Oct函数返回一个数的八进制数的字符串。传递给Oct函数的值可以是Short,Byte,Integer,Long或Object数据类型。语法如下:
Oct(Number)
其中,Number为必选项,表示任何有效的数值表达式或String表达式。
示例如下:
MsgBox(Oct(10))'返回 12 MsgBox(Oct(16))'返回 20 MsgBox(Oct("T"))'错误:从字符串“T”到类型“Long”的转换无效
(4)Str函数
Str函数返回一个数字的字符串形式。语法如下:
Str(Number)
其中,Number是必选项,表示任何有效数值表达式的Object。
示例如下:
MsgBox(Str(10))'返回 "10" MsgBox(Str(-10))'返回 "-10"
(5)Val函数
Val函数根据字符串中是否有小数位把包含在字符串中的数字返回为Integer或Double类型的数值,并且直到返回第一个不是数字或空格的位置为止。语法如下:
Val(InputStr)
其中,InputStr是必选项,表示任何有效的String表达式、Object变量或Char值。如果Expression的类型是Object,其值必须可转换为String,否则将发生System.ArgumentException错误。
示例如下:
MsgBox(Val("123"))'返回 123 MsgBox(Val("123 4"))'返回 1234 MsgBox(Val("123.456"))'返回 123.456 MsgBox(Val("123 4 visual studio "))'返回 1234
2.Microsoft .VisualBasic.DataAndTime函数
Microsoft .VisualBasic.DataAndTime函数名字空间包含了处理日期和时间所需要完成的任何事情。它在日期和时间功能上是很全面的。
(1)DateAdd函数
DateAdd函数返回包含已添加了指定时间间隔的日期和时间值的Date值。语法如下:
DateAdd(Interval,Number,DateValue)
其中,
Interval:必选,表示要加上的时间间隔的DateInterVal枚举值或String表达式。
Number:必选,一个Double值,表示要加上的时间间隔数的浮点表达式。Number可以为正数(以获取将来的日期/时间值),也可以为负数(以获取过去的日期/时间值)。在Interval指定小时、分钟或秒时,该参数可以包含小数部分。对于其他类型的Interval值,将忽略Number的所有小数部分。
DateValue:必选,一个Date值,表示时间间隔要加到的日期和时间的表达式。在调试程序中,DateValue本身不会更改。
若传递给DateAdd函数的数是负的,则获得当前DateValue过去的时期。DateInterval枚举的数值如表2-12所示。
表2-12 DateInterval枚举数值
示例如下:
Dim dt As Date
dt = DateAdd(DateInterval.Day, -4, #2/5/2005#)'dt的值为2005-2-1 dt = DateAdd(DateInterval.Quarter, 2, #2/5/2005#)'dt的值为2005-8-5 dt = DateAdd(DateInterval.Year, 3, #2/5/2005#)'dt的值为2008-2-5
(2)DateDiff函数
DateDiff函数返回一个Long值,用于指定两个Date值之间的时间隔数。语法如下:
DateDiff(Interval,Date1,Date2,[DayOfWeek],[WeekOfYear])
其中,
Interval:必选,DateInterval枚举值或String表达式,表示要用作Date1和Date2之差的单位的时间间隔。表2-12列出了DateInterval枚举的数值。
Date1:必选,一个Date值。要在计算中使用的第一个日期/时间值。
Date2:必选,一个Date值。要在计算中使用的第二个日期/时间值。
DayOfWeek:可选,从指定一周的第一天的FirstDayOfWeek枚举中选择的值。如果未指定,则使用FirstDayOfWeek.Sunday。表2-13列出了FirstDayOfWeek枚举的数值。
表2-13 FirstDayOfWeek枚举数值
WeekOfYear:可选,从指定一年的第一周的FirstWeekOfYear枚举中选择的值。如果未指定,则使用FirstWeekOfYear.Jan1。表2-14列出了WeekOfYear枚举的数值。
表2-14 WeekOfYear枚举的数值
示例如下:
Dim df As Long df = DateDiff(DateInterval.Day, #5/1/2007#, Now)'df的值为23 df = DateDiff(DateInterval.Year, #1/20/2006#, Now)'df的值为1 df = DateDiff(DateInterval.Hour, #5/23/2007#, Now)'df的值为40 df = DateDiff(DateInterval.Day, #5/1/2006#, Now, _ FirstDayOfWeek.Monday, FirstWeekOfYear.FirstFourDays)'df的值为388
(3)DatePart函数
DatePart函数返回一个整数值,该值包含给定Date值的指定组件。语法如下:
DatePart(Interval, DateValue,[FirstDayOfWeekValue],[FirstWeekOfYearValue])
其中,
Interval:必选,DateInterval枚举值或String表达式,表示要返回的日期/时间值部分。
DateValue:必选,要计算的Date值。
FirstDayOfWeekValue:可选,从指定一周的第一天的FirstDayOfWeek枚举中选择的值。如果未指定,则使用FirstDayOfWeek.Sunday。表2-13列出了FirstDayOfWeek枚举的数值。
FirstWeekOfYearValue:可选,从指定一年的第一周的FirstWeekOfYear枚举中选择的值。如果未指定,则使用FirstWeekOfYear.Jan1。表2-14列出了WeekOfYear枚举的数值。
示例如下:
Dim dp As Integer dp = DatePart(DateInterval.Day, #6/2/2005#)'dp的值为2 dp = DatePart(DateInterval.Year, #6/2/2005#)'dp的值为2005
(4)DateSerial函数
DateSerial函数返回一个日期值,表示指定的年、月、日。其中的时间信息设置为午夜(00:00:00)。语法如下:
DateSerial(Year,Month,Day)
其中,
Year:必选,1~9999之间的Integer表达式。但是,也接受此范围以外的值。如果Year是0~99之间的一个值,则将其解释为介于1930和2029之间;如果Year小于1,则从当前年份中减去该值。出于安全考虑,应该总是使用4位年份数值。
Month:必选。1~12之间的Integer表达式。但是,也接受此范围以外的值。Month值减去1并应用到计算得出的年份的1月。换言之,就是将Month的值减1再加上1月。如果需要,可以重新计算年份。下面的结果说明了这种效果:如果Month为1,则结果为计算得出的年份的1月;如果Month为0,则结果为前一年的12月;如果Month为-1,则结果为前一年的11月;如果Month为13,则结果为下一年的1月。
Day:必选,1~31之间的Integer表达式。但是,也接受此范围以外的值。Day值减去1并应用到计算得出的月份的第一天。换言之,(Day-1)再加上该月的第一天。如果需要,可以重新计算月份和年份。下面说明这种效果,如果Day为1,则结果为计算得出的月份的第一天;如果Day为0,则结果为前一月的最后一天;如果Day为-1,则结果为前一月的倒数第二天;如果Day超过了当前月的最后一天,则结果为下一月的相应天。例如,如果Month是4并且Day是31,则结果为5月1日。
示例如下:
Dim d As Date d = DateSerial(2005, -10, 2) '返回值为2004-2-2 d = DateSerial(2005, 7, -18) '返回值为2005-6-12 d = DateSerial(2005, 7, 18) '返回值为2005-7-18 d = DateSerial(20, 12, 12) '返回值为2020-12-12
(5)DateString属性
DateString属性返回或者设置一个字符串的值,它表示系统的当前日期。
示例如下:
Console.WriteLine(DateString()) '返回值为2007-7-2
(6)DateValue函数
DateValue函数返回一个Date值,它包含由字符串表示的日期信息。其中的时间信息设置为午夜(00:00:00)。语法如下:
DateValue(String)
其中,StringDate是必选的String表达式,表示1月1日00:00:00~9999年12月31日23:59:59之间的一个日期/时间值。
示例如下:
Dim d As Date d = DateValue("January 15,2007") '返回值为2007-1-15 d = DateValue("1/15") '返回值为2007-1-15
(7)Hour函数
Hour函数返回0~23之间的整数,它表示一天中的某小时。语法如下:
Hour(TimeValue)
其中,TimeValue是必选的,表示要从中提取小时的Date值。
示例如下:
Dim inthour As Integer
inthour = Hour(#3/26/2007 1:58:23 PM#) '返回值为13
(8)Minute函数
Minute函数返回一个0~59之间的整数,它表示一个小时中的某分钟。语法如下:
Minute(TimeValue)
其中,TimeValue是必选的,表示要从中提取分钟的Date数值。
示例如下:
Dim intminute As Integer intminute = Minute(#3/26/2007 1:58:23 PM#) '返回值为58
(9)Month函数
Month函数返回一个1~12之间的整数,它表示一年中的某一月。语法如下:
Month(DateValue)
其中,DateValue是必选的,表示要从中提取月的Date值。
Dim intmonth As Integer intmonth = Month(#3/26/2007 1:58:23 PM#) '返回值为3
(10)MonthName函数
MonthName函数返回一个字符串值,它包含指定月的名称。语法如下:
MonthName(Month,[Abbreviate])
其中,
Month:必选,Integer表达式。以数字表示的月份,介于1到13之间;1表示1月,12表示12月。对于13个月的日历,可以使用值13。如果系统使用12个月的日历而Month是13,则MonthName返回空字符串。
Abbreviate:可选,指示是否要缩写月份名称的Boolean值。如果省略,默认为False,这意味着月份名称不缩写。
示例如下:
Dim strmonth As String strmonth = MonthName(8) '返回值为August strmonth = MonthName(8, True) '返回值为Aug
(11)Now属性
Now属性返回包含系统的当前日期和时间的日期值。示例如下:
Console.WriteLine(Now) '返回值为2007-7-2 15:24:33
(12)Second函数
Second函数返回一个0~59范围的整数值,它表示一分钟中的某秒。语法如下:
Second(TimeValue)
其中,TimeValue是必选,表示要从中提取秒的Date值。
示例如下:
Dim intsecond As Integer intsecond = Second(#1/15/2007 1:56:18 PM#) '返回值为18
(13)TimeOfDay属性
TimeOfDay属性返回一个时间值,它包含系统当前的日期和时间。TimeOfDay属性的所有日期值设置为1,这与Now属性有所差别,下面以一个例子来说明,代码如下:
Console.WriteLine(TimeOfDay) '返回值为0001-1-1 15:40:39 Console.WriteLine(Now) '返回值为2007-7-2 15:40:39
(14)Timer属性
Timer属性返回双精度的数值,代表午夜算起所经过的秒数。
示例如下:
Console.WriteLine(TimeOfDay) '返回值为0001-1-1 15:50:47 Console.WriteLine(Timer)'返回值为57047.3125
(15)TimeSerial函数
TimeSerial函数返回一个日期数值,它表示指定的小时、分钟和秒,日期信息是相对于1年1月1日设置的。语法如下:
TimeSerial(Hour,Minute,Second)
其中,
Hour:必选,0~23之间的Integer表达式。但是,也接受此范围以外的值。
Minute:必选,0~59之间的Integer表达式。但是,也接受此范围以外的值。Minute值会与计算得出的小时相加,因此,负值指定该小时之前的分钟数。
Second:必选,0~59之间的Integer表达式。但是,也接受此范围以外的值。Second值会与计算得出的分钟相加,因此,负值指定该分钟之前的秒数。
示例如下:
Dim d As Date d = TimeSerial(16, 15, 30) '返回值为16:15:30 d = TimeSerial(16, -15, -10) '返回值为15:44:50 d = TimeSerial(16, -115, 0) '返回值为14:05:00
(16)TimeString属性
TimeString属性返回或者设置以字符串的值,代表系统当前日期的时间。示例如下:
Console.WriteLine(TimeString)'返回值为16:18:06
(17)TimeValue函数
TimeValue函数返回一个日期数值,它包含由字符串表示的时间信息,其中的日期信息设置为1年1月1日。语法如下:
TimeValue(String)
其中,StringTime是必选的String表达式,表示1年1月1日00:00:00~9999年12月31日23:59:59之间的一个日期/时间值。
示例如下:
Dim d As Date d = TimeValue(Now) '返回值为16:29:38
(18)Today属性
Today属性返回或设置一个日期的数值,它包含系统的当前日期。
Console.WriteLine(Today) ' 返回值为2007-7-2 0:00:00
(19)WeekDay函数
WeekDay函数返回一个整数数值,它包含一个表示一周中的某天的数字。语法如下:
WeekDay(DateValue,[DayOfWeek])
其中,
DateValue:必选,要确定属于一周中的哪一天的Date值。
DayOfWeek:可选,从指定一周的第一天的FirstDayOfWeek枚举中选择的值。如果未定,则使用FirstDayOfWeek.Sunday。
示例如下:
Dim intweekday As Integer intweekday = Weekday(#7/2/2007#) '返回值为2 intweekday = Weekday(#7/2/2007#, FirstDayOfWeek.Monday) '返回值为1
(20)WeekDayName函数
WeekDayName函数返回一个字符串值,它包含指定的周几的名称。语法如下:
WeekdayName(Weekday,Abbreviate, FirstDayOfWeekValue)
其中,
Weekday:必选,Integer表达式。以数字表示的周几,介于1到7之间;1表示一周的第一天,7表示一周的最后一天。第一天和最后一天的确定方式取决于FirstDayOfWeekValue的设置。
Abbreviate:可选,指示是否缩写周几的名称的Boolean值。如果省略,默认为False,这意味着周几的名称不缩写。
FirstDayOfWeekValue:可选,从指定一周的第一天的FirstDayOfWeek枚举中选择的值。如果未指定,则使用FirstDayOfWeek.System。
示例如下:
Dim d As Date d = #5/15/2007# Console.Write(WeekdayName(3, False))'返回值为Tuesday
Console.Write(WeekdayName(3, False, FirstDayOfWeek.Monday))'返回值为Wednesday
(21)Year函数
Year函数返回一个表示年的1~9999之间的整数,代表所传递日期的年份。语法如下:
year(Timevalue)
其中,TimeValue是必选的,表示要从中提取的Date值。
示例如下:
Dim intYear As Integer intYear = Year(#1/15/2007#)'IntYear的值为2007
3.Microsoft .VisualBasic.Stirngs函数
Microsoft .VisualBasic.Stirngs函数名字空间包含处理字符串操作和格式化的函数,它在字符串处理功能上是极全面的。
(1)ASC函数
ASC函数返回一个Integer值,该值表示与某个字符相对应的字符码。语法如下:
Asc(String)
其中,String是必选的,表示任何有效的Char或String表达式。如果String是String表达式,则只将该字符串的第一个字符输入。如果String为Nothing或不包含任何字符,则会发生System.ArgumentException错误。
示例如下:
MsgBox(Asc("a")) '弹对话框显示值为97 MsgBox(Asc("A")) '弹对话框显示值为65
(2)Chr函数
Chr函数返回与指定字符码相关联的字符。语法如下:
Chr(CharCode)
其中,CharCode是必选的Integer表达式,表示字符的“码位”(字符码)。如果CharCode在有效范围之外,则会发生System.ArgumentException错误。Chr的有效范围是0~255,CharW的有效范围是-32768~65535。示例如下:
MsgBox(Chr(65))'弹对话框显示值为A
下面列出一些Chr函数常见的表示方法,如表2-15所示。
表2-15 Chr函数常见的表示方法
(3)FormatNumber,FormatCurrency,FormatPercent函数
FormatNumber,FormatCurrency,FormatPercent函数都返回一个表达式,用于为数字指定某种格式。FormatCurrency函数返回数值是会在该数值前加一个货币符号;FormatPercent函数返回数值时会在该数值的后面加一个百分比符号。这三个函数都有相同的5个参数。语法如下:
FormatNumber或FormatCurrency或FormatPercent (Expression,[NumDigitsAfterDecimal],[IncludeLeadingDigit], [UserParensFoeNegativeNumbers],[GroupDigits])
其中,
Expression:必选,要格式化的表达式。
NumDigitsAfterDecimal:可选,一个数值,指示显示小数点后几位小数。默认值为-1,指示使用计算机的区域设置。
IncludeLeadingDigit:可选,TriState常量(参见表2-16),指示对于小数值是否显示前导零。
表2-16 Tristate常量
UserParensFoeNegativeNumbers:可选,TriState常量(参见表2-16),指示是否用括号将负值括起来。
GroupDigits:可选,TriState常量(参见表2-16),指示是否用区域设置中指定的组分隔符对数字进行分组。
示例如下:
Dim num As Double = 1324.5679 Console.WriteLine(FormatNumber(num, 4, TriState.UseDefault, _ TriState.UseDefault, TriState.True)) '输出值为1,324.5679 Console.WriteLine(FormatNumber(num, 2, TriState.UseDefault, _ TriState.UseDefault, TriState.True)) '输出值为1,324.57 Console.WriteLine(FormatCurrency(num, 4, TriState.UseDefault, _ TriState.UseDefault, TriState.True)) '输出值为¥1,324.5679 Console.WriteLine(FormatCurrency(num, 2, TriState.UseDefault, _ TriState.UseDefault, TriState.True)) '输出值为¥1,324.57 Console.WriteLine(FormatPercent(num, 4, TriState.UseDefault, _ TriState.UseDefault, TriState.True)) '输出值为132,456.7900% Console.WriteLine(FormatPercent(num, 2, TriState.UseDefault, _
TriState.UseDefault, TriState.True)) '输出值为132,456.79%
(4)FarmatDateTime函数
该函数返回表示日期/时间值的字符串表达式。语法如下:
FarmatDateTime(Expression,[NameFormat])
其中,
Expression:必选,要格式化的Date表达式。
NameFormat:可选,一个数值,指示所使用的日期/时间格式。如果省略,则使用DateFormat.GeneralDate(参见表2-17)。
表2-17 NameFormat常数
示例如下:
Dim d As DateTime = #3/25/2007 12:23:13 PM# Console.WriteLine(FormatDateTime(d, DateFormat.GeneralDate)) '输出值为2007-3-25 12:23:13 Console.WriteLine(FormatDateTime(d, DateFormat.LongDate)) '输出值为2007年3月25日 Console.WriteLine(FormatDateTime(d, DateFormat.LongTime)) '输出值为12:23:13 Console.WriteLine(FormatDateTime(d, DateFormat.ShortDate)) '输出值为2007-3-25 Console.WriteLine(FormatDateTime(d, DateFormat.ShortTime)) '输出值为12:23
(5)GetChar函数
该函数返回Char值,该值表示提供的字符串中指定索引处的字符。语法如下:
GetChar(Str,Index)
其中,
Str:必选,任何有效的String表达式。
Index:必选,Integer表达式。要返回的Str中的字符的索引(从1开始)。
示例如下:
Dim str As String = "Hello world!" Console.WriteLine(GetChar(str, 9)) '输出的值为r
(6)InStr函数
该函数返回一个整数,用来获得一个字符串在另一个字符串内第一次出现的起始位置。语法如下:
InStr([Start,]String1,String2,[Compare])
其中,
Start:可选,一个数字表达式,设置每次查找的起始位置。如果省略,查找从第一个字符位置开始。开始索引是基于1的。
String1:必选,被搜索的String表达式。
String2:查找到的String表达式。
Compare:可选,指示字符串比较的类型(有基于文本和基于二进制两种)。如果省略Compare,则Option Compare设置确定比较类型。
示例如下:
Dim str1, str2 As String str1 = "abdkifgfgjryjkhg" str2 = "g" Console.WriteLine(InStr(1, str1, str2, CompareMethod.Text)) '输出的值为7
需要注意的是,如果String1长度为零或String2没有被发现,或者String1比String2大,那么InStr函数的返回值为0。
(7)InStrRev函数
InStrRev函数返回某字符串在另一个字符串中从右边开始算起第一次出现的位置。语法如下:
InStrRev(string1, string2[, start[, compare]])
其中,
StringCheck:必选,要执行搜索的字符串表达式。
StringMatch:必选,要搜索的字符串表达式。
Start:可选,数值表达式,设置每次搜索的从1开始的起始位置,从字符串的左边算起。如果省略Start,则使用-1,这表示从最后一个字符的位置处开始进行搜索,然后搜索从右向左进行。
Compare:可选,数值,指示在计算子字符串是要使用的比较类型(有基于文本和基于二进制两种)。如果省略,则执行二进制比较。
示例如下:
Dim str1, str2 As String
str1 = "abdkifgfgjryjkh12345" str2 = "g" Console.WriteLine(InStrRev(str1, str2, -1, CompareMethod.Binary))'输出的值为9
注意
如果StringCheck长度为零或StringMatch没被发现或StringCheck的长度大于StringMatch的长度,那么InStrRev函数的返回值为0。
(8)Join函数
该函数用来连接包含在一个数组中的多个子串。语法如下:
Join(SourceArray[,Delimiter])
其中,
SourceArray:必选,包含要连接的子字符串的一维数组。
Delimiter:可选,用于在返回的字符串分隔子字符串的任意字符串。如果省略该数,则使用空白字符(“ ”)。如果Delimiter是零长度字符串(“”)或Nothing,则列表中的所有项都串联在一起,中间没有分隔符。
示例如下:
Dim strarray(5) As String strarray(0) = "c:" strarray(1) = "Documents and Settings" strarray(2) = "Administrator" strarray(3) = "桌面" strarray(4) = "chapter2" Dim str As String str = Join(strarray, "\") Console.WriteLine(str) '输出结果为:c:\Documents and Settings\Administrator\桌面\chapter2\
(9)LCase函数
该函数用于将给定字符串转换成小写,示例如下:
Console.WriteLine(LCase("HELLO WORLD!")) '输出结果为:hello world!
(10)Left函数
该函数返回一个字符串,该字符串包含从某字符串左侧算起的指定数量的字符。语法如下:
Left(Str,Length)
其中,
Str:必选,一个String表达式,从该表达式返回最左侧的字符。
Length:必选,Integer表达式,一个数值表达式,指示要返回多少个字符。如果为0,则返回零长度字符串。如果大于或等于Str中的字符的数量,则返回整个字符串。
示例如下:
Dim str As String str = "c:\Documents and Settings\Administrator\桌面\chapter2\" Console.WriteLine(Left(str, 10)) '输出结果为:c:\Documen
(11)Len函数
该函数返回一个整数,该整数表示字符串中的字符数或存储变量所需的指定字节数。语法如下:
Len(Expression)
其中,Expression是任何有效的String表达式或变量名。如果Expression的类型为Object,则Len函数返回FilePut函数将其写入文件时的大小。
示例如下:
Dim str As String str = "c:\Documents and Settings\Administrator\桌面\chapter2\" Console.WriteLine(Len(str)) '输出结果为:52
(12)LSet函数,RSet函数
LSet函数和RSet函数分别是用于在字符串的右边和左边添加指定个数的空格。语法如下:
LSet或Rset(Source,Length)
其中,
Source:必选,String表达式,字符串变量的名称。
Length:必选,String表达式,返回的字符串的长度。
示例如下:
Dim str As String str = "Left" Console.WriteLine("|" + LSet(str, 10) + "|") '输出结果为:|Left | str = "Right" Console.WriteLine("|" + RSet(str, 10) + "|") '输出结果为:| Right|
(13)LTrim,Trim,RTrim函数
LTrim,Trim,RTrim函数都是返回一个字符串,它包含一个没有前导空格(LTrim)、尾随空格(RTrim)或既没有前导也没有尾随空格(Trim)的指定字符串的副本。语法如下:
LTrim(str) RTrim(str) Trim(str)
其中,str是必选项,是任何有效的String表达式。
示例如下:
Dim str As String str = " This is Copy " Console.WriteLine(Trim(str)) '输出结果为:"This is Copy" Console.WriteLine(LTrim(str)) '输出结果为:"This is Copy " Console.WriteLine(RTrim(str)) '输出结果为:" This is Copy"
(14)Mid函数
该函数用于获取字符串从指定位置开始截取的指定的字符数。语法如下:
Mid(str,Start[,Length])
其中,
str:必选,从中返回字符的String表达式。
Start:必选,Integer表达式,要返回的字符的起始位置。如果Start大于str中的字符数,则Mid函数返回零长度字符串。Start从1开始。
Length:可选,Integer表达式,要返回的字符的数量,如果省略它或如果文本中字符(包括Start位置处的字符)的数量小于Length,则返回字符串起始位置到结尾处的所有字符。
(15)Replace函数
该函数返回一个字符串,在该字符串中,指定的子字符串已被另一个子字符串替换了指定的次数。语法如下:
Replace(Expression,Find,Replacement,[Start],[Count],[Compare])
其中,
Expression:包含要替换的子字符串的字符表达式。
Find:必选,要搜索的子字符串。
ReplaceNment:必选,要替换的子字符串。
Start:可选,Expression中的一个位置,从该位置开始搜索子字符串。如果省略,则假定为1。
Count:可选,执行子字符串替换操作的次数。如果省略,则使用默认值-1,它表示执行所有可能的替换。
Compare:可选,数值,指示在计算子字符串时要使用的比较类型(有基于文本和基于二进制两种)。
示例如下:
Dim str As String str = " This is Replace " Console.WriteLine(Replace(str, " ", "/", )) '输出结果为:"/This/is/Replace/" Console.WriteLine(Replace(str, " ", "/", 6, 2, CompareMethod.Text))
'输出结果为:"/is/Replace/"
(16)Space函数
该函数返回有指定数量的空格组成的字符串。
示例如下:
Dim str As String str = " This is Replace " Console.WriteLine("|" & Space(10) & "|") '输出结果为:"| |"
(17)StrComp函数
该函数用于比较两个字符串,根据比较的结果返回-1、0或1。语法如下:
StrComp(String1,String2[,Compare])
其中,
String1:必选,任何有效的String表达式。
String2:必选,任何有效的String表达式。
Compare:可选,指示字符串比较的类型。如果省略,则Option Compare设置确定比较类型(文本或是二进制比较)。
当String1大于String2时函数返回值为1;当String1等于String2时函数返回值为0;当String1小于String2时函数返回值为-1。
示例如下:
Dim str1 As String = "this is strcomp" Dim str2 As String = "THIS IS STRCOMP" Console.WriteLine(StrComp(str1, str2)) '输出结果为:1
(18)StrConv函数
该函数返回转换为指定形式的字符串。语法如下:
StrConv(Str,Conversion[,LocaleID])
其中,
Str:必选,要转换的String表达式。
Conversion:必选,VbStrConv Enumeration成员如表2-18所示。指定要执行的转换类型的枚举型。
表2-18 VbStrConv Enumeration成员
续表
LocaleID:可选,LocaleID值(如果与系统LocaleID不同)(系统LocaleID值为默认值)。
示例如下:
Dim str As String = "this is strconv" Console.WriteLine(StrConv(str, VbStrConv.ProperCase)) '输出结果为:This Is Strconv
(19)StrReverse函数
该函数返回一个字符串,在该字符串中指定字符串的字符顺序被颠倒。语法如下:
StrReverse(Expression)
其中,Expression为必选项,表示要颠倒其字符顺序的字符串表达式。如果Expression为零长度字符串,则返回零长度字符串。示例如下:
Dim str As String = "this is StrReverse" Console.WriteLine(StrReverse(str)) '输出结果为:esreveRrtS si siht
(20)UCase函数
该函数返回一个字符串或字符,用于将括号内的字符或字符串转换成大写形式。语法如下:
UCase(Value)
其中,Value是必选的,表示任何有效的String或Char表达式。
Dim str As String = "this is ucase" Console.WriteLine(UCase(str)) '输出结果为:THIS IS UCASE