使用 int.parse() 或 convert.toint32() 转换混有换行符的字符串会抛出 formatexception。解决办法是在调用解析函数前,先通过 string.replace("
", "") 或 regex.replace(s, "\s+", "") 移除所有空白字符,确保输入仅包含数字。

int.Parse() 遇到空输入会返回什么
int.Parse() 在接收到空字符串时不会返回零值,而是直接抛出 System.FormatException。这要求我们在处理用户输入或文件读取结果时,必须显式检查字符串是否为空或仅包含空白符,否则程序会在运行时崩溃。

using System;
class Program
{
static void Main()
{
string input = "123
";
try
{
// 直接解析会失败
int result = int.Parse(input);
Console.WriteLine(result);
}
catch (FormatException)
{
Console.WriteLine("Format Error");
}
// 清理后解析成功
string clean = input.Replace("
", "");
int validResult = int.Parse(clean);
Console.WriteLine(validResult);
}
}
TryParse() 对格式错误的处理机制
int.TryParse() 是更安全的替代方案,它不会抛出异常,而是返回布尔值指示转换是否成功。当输入包含换行符等非法字符时,该方法返回 false,并将输出参数设为 0。这种静默失败的特性非常适合用于数据清洗流程中的初步验证。

using System;
class Program
{
static void Main()
{
string dirtyInput = "456
";
int output;
bool success = int.TryParse(dirtyInput, out output);
if (!success)
{
Console.WriteLine("Failed to parse due to whitespace.");
// 执行清理逻辑
string cleaned = dirtyInput.Trim();
if (int.TryParse(cleaned, out output))
{
Console.WriteLine(output);
}
}
}
}
基于程序中某个输入、条件或结果的具体问题
当输入字符串仅包含换行符(如 "
")时,int.Parse() 依然会抛出异常,而 int.TryParse() 同样返回 false。这是因为纯空白字符串不符合整数的格式规范。开发者在处理此类边缘情况时,应结合 string.IsNullOrWhiteSpace() 进行前置判断,避免无效的逻辑分支。


















