VB.NET模块之Strings模块及对模块的理解
一、模块
模块不能继承,也不能实例化,在使用时就不必new。默认情况下,模块里的变量、过程、函数均是全局共享的。VB.net也提供了一些系统模块,如:Strings、DateAndTime、Conversion、FileSystem等,系统级模块就是把一些功能相同的函数组织在一起,可以通过模块名来访问具体的功能函数。
使用系统函数时,你只需记住这个函数的模块即可,或者在你不知使用什么函数的情况下,你只要知道该函数属于什么类别,在vs中键入模块名,逐项查找即可。
如果是自定义模块,应仿照系统级模块的方式,将功能相同的函数组织在一起,便于访问。一个项目可以有多个模块,相同名字的变量、函数、过程可以在不同模块中定义,但是在使用时必须要先引用模块名。如果没有重名的,可以省略模块名。
示例:Module Module2
Public testVar As String = "Module2的变量"
Public Sub m2sub()
System.Console.WriteLine("现在执行了Module2模块的m2sub过程")
End Sub
End Module
Module Module3
Public testVar As String = "Module3的变量"
Public Sub m3sub()
System.Console.WriteLine("现在执行了Module3模块的m3sub过程")
End Sub
End Module
Module Module1
Sub Main()
System.Console.WriteLine("模块2:{0}", Module2.testVar) '必须引用模块名
System.Console.WriteLine("模块3:{0}", Module3.testVar) '必须引用模块名
m2sub() '省略了模块名
Module3.m3sub() '未省略模块名,调用过程
System.Console.ReadLine()
End Sub
End Module
系统模块:Constants 模块包含杂项常数。这些常数可以在代码中的任何地方使用,主要用于msgbox()函数。
ControlChars 模块包含用作控制字符的常数。
Conversion 模块包含用于执行各种转换操作的过程。包含进制转换、数字转字符串、字符串转数字
DateAndTime 模块包含在日期和时间操作
ErrObject 模块包含用于使用 Err 对象标识和处理运行时错误的属性和过程。
FileSystem 模块包含用于执行文件、目录或文件夹以及系统操作的过程。建议用性能高的my.computer.filesystem对象代替。
Financial 模块包含用于执行财务操作的过程
Globals 模块包含脚本引擎函数。
Information 模块包含用于返回、测试或验证信息的过程
Interaction 模块包含用于与对象、应用程序和系统交互的过程。可运行其他程序、调用方法或属性、从计算机发出声响、
提供命令行字符串、操作 COM 对象并控制对话框。
Strings 模块包含用于执行字符串操作的过程。
VbMath 模块包含用于执行算术操作的过程。
二、Strings模块
1、asc()、ascw()与chr()、chrw():前两个返回字符的代码(integer),后两个返回指定数值的字符,asc、chr使用双字节字符集(-32768到32767),chr、chrw使用Unicode字符集(0-65535)
用下面的代码来感受不同:
System.Console.WriteLine("30000对应的双字节编码:{0}", Strings.Chr(30000))
System.Console.WriteLine("30000对应的Unicode编码:{0}", Strings.ChrW(30000))
System.Console.WriteLine("切的双字节编码 :{0}", Strings.Asc("切"))
System.Console.WriteLine("切的Unicode编码:{0}", Strings.AscW("切"))
System.Console.ReadLine()
运行结果:
2、Filter函数:返回一个从零开始的数组,该数组包含基于指定筛选条件的 String 数组的子集。
Function Filter(
ByVal Source() As { Object | String },
ByVal Match As String,
Optional ByVal Include As Boolean = True,
Optional ByVal Compare As CompareMethod = CompareMethod.Binary
) As String()
参数Source()、返回的结果String()必须是数组。第三个参数为True时,结果中是包含第二个参数(要搜索的字符串)的所有字符串;为False时,结果中是不包含第二个参数的所有字符串。第四参数是比较方式,分为CompareMethod.Binary即二进制比较和CompareMethod.text即文本比较。
示例:
Module Module1
Sub Main()
'测试Filter函数
Dim StringText(3) As String
StringText(0) = "一心一意"
StringText(1) = "不名一钱"
StringText(2) = "百足之虫"
Dim stext() As String
'False,数组中排除了"一心一意" "不名一钱",只有"百足之虫"。
'stext = Strings.Filter(StringText, "一", False, CompareMethod.Binary)
'True,数组中有"一心一意" "不名一钱"
stext = Strings.Filter(StringText, "一", True, CompareMethod.Binary)
'显示数组stext中的每个元素
For Each st As String In stext
System.Console.WriteLine(st)
Next
System.Console.ReadLine()
End Sub
End Module
3、Format:格式化字符串,formatNumber,FormatDateTime,FormatPercent
Public Shared Function Format( _
ByVal Expression As Object, _
Optional ByVal Style As String = "" _
) As String
Expression可以是数字、日期时间、日期时间序列数。
示例:
Sub Main()
'测试Format 函数()
Dim i As Integer = 10
Dim FString As String
'将数字5格式化为005.00
FString = Strings.Format(i, "000.00")
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'.net Framework中格式化字符串的方法,优于strings.format()方式,也利于使用其他如c#。
'System.Console.WriteLine("<0,7:000.00>第一个数字0是参数索引,7是宽度,000.00是格式化,结果如下:")
'FString = System.String.Format("{0,7:000.00}", i) '{0,7:000.00}是复合格式化
'有两个参数
' FString = System.String.Format("{0,7:000.00}" & Constants.vbCrLf & "<1,6:###.##>" & vbCrLf & "{1,6:###.##}", i, i)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
System.Console.WriteLine(FString)
System.Console.ReadLine()
End Sub
4、mid函数:从一个字符串返回包含指定数量字符的字符串。例:Mid("NBA美职篮", 2, 3) 返回“BA美”,第二个参数必须从1开始。
instr函数:返回一个串在另一个串中第一次出现的位置。例:InStr("美职篮就是美国男子职业篮球联赛", "篮") 返回3。
instrrev函数:同上,但是从右边开始找。例:InStrRev("美职篮就是美国男子职业篮球联赛", "篮") 返回12。
StrReverse函数:反序字符串。 例:StrReverse(“NBA美职篮”) 返回:篮职美ABN