将字符串转换为整数
有多种方法可用于将 string
显式转换为 integer
,例如:
-
Convert.ToInt16();
-
Convert.ToInt32();
-
Convert.ToInt64();
-
int.Parse();
但是如果输入字符串包含非数字字符,则所有这些方法都将抛出 FormatException
。为此,我们需要编写一个额外的异常处理(try..catch
)来处理这种情况。
示例说明:
那么,让我们的输入是:
string inputString = "10.2";
例 1: Convert.ToInt32()
int convertedInt = Convert.ToInt32(inputString); // Failed to Convert
// Throws an Exception "Input string was not in a correct format."
注意: 其他提到的方法也是如此 - Convert.ToInt16();
和 Convert.ToInt64();
例 2: int.Parse()
int convertedInt = int.Parse(inputString); // Same result "Input string was not in a correct format.
我们如何规避这个?
如前所述,为了处理异常,我们通常需要一个 try..catch
,如下所示:
try
{
string inputString = "10.2";
int convertedInt = int.Parse(inputString);
}
catch (Exception Ex)
{
//Display some message, that the conversion has failed.
}
但是,在任何地方使用 try..catch
都不是一个好习惯,如果输入错误,我们可能会在某些情况下给出 0
*(如果我们按照上面的方法,我们需要从 catch 块中分配 0
到 convertedInt
)。*为了处理这种情况,我们可以使用一种名为 .TryParse()
的特殊方法。
.TryParse()
方法具有内部异常处理,它将为 out
参数提供输出,并返回指示转换状态的布尔值 (如果转换成功则返回 *true
;如果失败则返回 false
)。*根据返回值,我们可以确定转换状态。让我们看一个例子:
用法 1: 将返回值存储在布尔变量中
int convertedInt; // Be the required integer
bool isSuccessConversion = int.TryParse(inputString, out convertedInt);
我们可以在执行后检查变量 isSuccessConversion
来检查转换状态。如果它是假的话,那么 convertedInt
的值将是 0
(如果你想要 0
用于转换失败,则无需检查返回值)。
用法 2: 用 if
检查返回值
if (int.TryParse(inputString, out convertedInt))
{
// convertedInt will have the converted value
// Proceed with that
}
else
{
// Display an error message
}
用法 3: 不检查返回值你可以使用以下,如果你不关心返回值 (转换与否,0
就可以了)
int.TryParse(inputString, out convertedInt);
// use the value of convertedInt
// But it will be 0 if not converted