遇到 int.parse 抛出 formatexception,通常是因为输入字符串包含非数字字符、空白符或格式不符合预期。排查时请检查字符串是否干净(无空格)、是否为空,以及是否超出了整数范围。

如何安全地转换可能包含空格的字符串?
使用 int.TryParse 是处理不确定输入的最佳实践,它能避免异常并返回布尔值指示成功与否。对于包含前导或尾随空格的字符串,先调用 Trim() 再解析,或者直接使用 TryParse 配合 NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite 样式参数。

using System;
using System.Globalization;
class Program {
static void Main() {
string input = " 123 ";
int result;
// 方法1:手动Trim
if (int.TryParse(input.Trim(), out result)) {
Console.WriteLine("Success: " + result);
} else {
Console.WriteLine("Failed");
}
// 方法2:使用NumberStyles
if (int.TryParse(input, NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite, CultureInfo.InvariantCulture, out result)) {
Console.WriteLine("Style Success: " + result);
}
}
}预期输出:
Success: 123
Style Success: 123
如何处理包含无效字符的混合字符串?
如果字符串中混入了字母、符号或其他不可见字符,int.Parse 会直接失败。此时应逐字符检查或使用正则表达式过滤,确保只保留数字部分。若整个字符串必须完全匹配整数格式,可结合 Regex.IsMatch 进行预校验。

using System;
using System.Text.RegularExpressions;
class Program {
static void Main() {
string mixedInput = "abc123def";
string digitsOnly = Regex.Replace(mixedInput, "[^0-9]", "");
if (digitsOnly.Length > 0 && int.TryParse(digitsOnly, out int parsedValue)) {
Console.WriteLine("Extracted: " + parsedValue);
} else {
Console.WriteLine("No valid integer found");
}
}
}预期输出:Extracted: 123
当输入为null或空字符串时会发生什么?
传入 null 会抛出 ArgumentNullException,而传入空字符串 "" 则会抛出 FormatException。在调用解析方法前,务必使用 string.IsNullOrEmpty() 或 string.IsNullOrWhiteSpace() 进行防御性检查,以避免运行时错误。


















