分析数值字符串

更新:2007 年 11 月

所有的数字类型都有一个静态 Parse 方法,可用于将数字类型的字符串表示形式转换为实际的数字类型。这些方法可用于分析那些使用数字格式字符串中提及的格式设置说明符之一所产生的字符串。

用于表示货币符号、千位分隔符和小数点的字符均在格式提供程序中定义。Parse 方法接受格式提供程序,允许您指定和显式分析特定区域性字符串。如果未指定格式提供程序,则使用与当前线程关联的提供程序。有关更多信息,请参见格式化概述

下面的代码示例将字符串转换为整数值,增加该值,并显示结果。

Dim MyString As String = "12345"
Dim MyInt As Integer = Integer.Parse(MyString)
MyInt += 1
Console.WriteLine(MyInt)
' The result is "12346".
string MyString = "12345";
int MyInt = int.Parse(MyString);
MyInt++;
Console.WriteLine(MyInt); 
// The result is "12346". 

NumberStyles 枚举指示要分析的字符串的允许格式。可使用此枚举来分析包含货币符号、小数点、指数、括号等的字符串。例如,在 en-US 区域性中,如果未传递 NumberStyles.AllowThousands 枚举,则无法使用 Parse 方法将包含逗号的字符串转换成整数值。

NumberStyles.AllowCurrencySymbol 指定应将数字分析为货币而不是小数。NumberStyles.AllowDecimalPoint 表示允许使用小数点。有效的小数点字符由当前的 NumberFormatInfo 对象的 NumberDecimalSeparatorCurrencyDecimalSeparator 属性决定。NumberStyles.AllowThousands 表示允许使用组分隔符。有效的组分隔符字符由当前的 NumberFormatInfo 对象的 NumberGroupSeparatorCurrencyGroupSeparator 属性决定。有关有效的非数值字符类型的完整列表,请参见 NumberStyles 枚举文档。

NumberStyles 枚举使用当前区域性指定的字符来辅助分析。如果没有通过将 CultureInfo 对象集传递至对应于所分析的字符串的区域性来指定区域性,则将使用与当前线程相关联的区域性。

下面的代码示例无效,并将引发异常。它解释了用于分析包含非数值字符的字符串的错误方法。首先创建一个新的 CultureInfo,并将其传递给 Parse 方法,以指定使用 en-US 区域性来进行分析。

Imports System.Globalization

Dim MyCultureInfo As CultureInfo = new CultureInfo("en-US")
Dim MyString As String = "123,456"
Dim MyInt As Integer = Integer.Parse(MyString, MyCultureInfo)
Console.WriteLine(MyInt)
' Raises System.Format exception.
using System.Globalization;

CultureInfo MyCultureInfo = new CultureInfo("en-US");
string MyString = "123,456";
int MyInt = int.Parse(MyString, MyCultureInfo);
Console.WriteLine(MyInt); 
// Raises System.Format exception.

应用具有 AllowThousands 标志的 NumberStyles 枚举时,Parse 方法将忽略前面示例中引发异常的逗号。下面的代码示例使用与前面示例相同的字符串,但未引发异常。与前面的示例相似,首先创建一个新的 CultureInfo,并将其传递给 Parse 方法,以指定使用 en-US 区域性所用的千位分隔符来进行分析。

Imports System.Globalization

Dim MyCultureInfo As CultureInfo = new CultureInfo("en-US")
Dim MyString As String = "123,456"
Dim MyInt As Integer = Integer.Parse(MyString, NumberStyles.AllowThousands, MyCultureInfo)
Console.WriteLine(MyInt)
' The result is "123456".
using System.Globalization;

CultureInfo MyCultureInfo = new CultureInfo("en-US");
string MyString = "123,456";
int MyInt = int.Parse(MyString, NumberStyles.AllowThousands, MyCultureInfo);
Console.WriteLine(MyInt); 
// The result is "123456".

请参见

参考

NumberStyles

其他资源

分析字符串

格式化类型

转换类型