VB.NET编程语言的推出,为大家带来了非常大好处,比如可以实现代码的托管。并且还能支持类的各种性能。在这里我们会了解到VB.NET区域性的应用对其他一些特定操作的影响,以便大家理解这一语言的应用方式。#t#
何时使用特定于VB.NET区域性的字符串
所有 Visual Basic 字符串转换函数(除 Str 和 Val 函数外)都使用应用程序的区域性信息,以确保转换和比较适合于应用程序用户的区域性。
在运行于具有不同区域性设置的计算机上的应用程序中成功使用字符串转换函数的关键在于:了解哪些函数使用特定的区域性设置,哪些函数使用当前区域性设置。请注意,应用程序的区域性设置默认情况下是从操作系统的区域性设置中继承的。有关更多信息,请参见 Asc、AscW 函数、Chr、ChrW 函数、Format 函数、Hex 函数 (Visual Basic)、Oct 函数 和 类型转换函数。
在字符串和数字之间进行转换时,Str(将数字转换为字符串)以及 Val(将字符串转换为数字)函数不使用应用程序的VB.NET区域性信息。相反,它们只将句点 (.) 识别为有效的小数点分隔符。与这些函数类似的可识别区域性的函数包括:
使用当前区域性的转换。CStr 和 Format 函数将数字转换为字符串,而 CDbl 和 CInt 函数将字符串转换为数字。
使用特定区域性的转换。每个数字对象都有一个将数字转换为字符串的 ToString(IFormatProvider) 方法,以及一个将字符串转换为数字的 Parse(String, IFormatProvider) 方法。例如,Double 类型提供了 ToString(IFormatProvider) 和 Parse(String, IFormatProvider) 方法。
使用特定区域性
在以下两种很重要的情况下,需要进行字符串比较:
对数据进行排序,以便向用户显示。使用基于当前VB.NET区域性的运算,以使字符串正确排序。
确定两个应用程序内部字符串是否完全匹配(通常用于安全目的)。使用不考虑当前区域性的运算。
使用 Visual Basic StrComp 函数可以执行这两种类型的比较。指定可选参数 Compare 可控制比较的类型:对于大多数输入和输出,可指定 Text,如果要确定是否完全匹配,可指定 Binary。
StrComp 函数返回一个整数,该整数指示所比较的两个字符串之间基于排序顺序的关系。正数结果值指示第一个字符串大于第二个字符串。负数结果指示第一个字符串较小,而零指示两个字符串相等。
- Visual Basic
- ' Defines variables.
- Dim TestStr1 As String = "ABCD"
- Dim TestStr2 As String = "abcd"
- Dim TestComp As Integer
- ' The two strings sort
equally. Returns 0.- TestComp = StrComp(TestStr1,
TestStr2, CompareMethod.Text)- ' TestStr1 sorts after TestStr2.
Returns -1.- TestComp = StrComp(TestStr1,
TestStr2, CompareMethod.Binary)- ' TestStr2 sorts before
TestStr1. Returns 1.- TestComp = StrComp(TestStr2,
TestStr1)
也可以使用 .NET Framework 中与 StrComp 函数对应的 String..::.Compare 方法。这是基字符串类的静态重载方法。下面的示例阐释如何使用此方法:
- Visual Basic
- Dim myString As String
= "Alphabetical"- Dim secondString As
String = "Order"- Dim result As Integer
- result = String.Compare
(myString, secondString)
为了更细致地控制比较的执行方式,您可以使用 Compare 方法的附加重载。利用 String..::.Compare 方法,您可以使用 comparisonType 参数来指定要使用哪种比较方式。
VB.NET区域性应用安全注意事项
如果应用程序根据比较或大小写转换运算的结果制定安全决策,则运算应使用 String..::.Compare 方法,并为 comparisonType 参数传递 Ordinal 或 OrdinalIgnoreCase。