You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用StreamReader读取文本文件时持续报错“输入字符串格式不正确”

嘿,这个格式错误的问题我之前也碰到过,本质就是你从文件里读出来的字符串没办法被正确转换成数字类型——不管用Convert还是Parse都会踩这个坑,因为它们对数字格式的要求是一致的。我给你拆解几个最可能的原因和解决办法:

1. 先检查文件内容的格式问题

这是最常见的触发原因:

  • 你默认用逗号分割,但文件里可能有多余的空格、制表符,比如某行是" 256.8 , 1200 , MyBlog ",这些空格会让转换函数认不出有效数字;
  • 或者文件里存在空行、字段数量不足的行(比如某行只有两个逗号分隔的内容),导致data[0]或data[1]是空字符串,转换直接报错。

解决办法:读取每行后先清理字符串,再加格式校验:

ArrayList Webpages = new ArrayList();
string FileName = "Medium.txt";
// 指定编码避免隐藏字符问题,比如UTF-8
using (StreamReader newSR = new StreamReader(FileName, System.Text.Encoding.UTF8))
{
    while (!newSR.EndOfStream)
    {
        string line = newSR.ReadLine();
        // 跳过空行
        if (string.IsNullOrWhiteSpace(line)) continue;
        
        // 分割后去掉每个字段的前后空格
        string[] data = line.Split(',').Select(s => s.Trim()).ToArray();
        
        // 检查字段数量是否足够
        if (data.Length < 3)
        {
            Console.WriteLine($"跳过格式错误的行:{line}");
            continue;
        }

        Webpage newEntry = new Webpage();
        // 用TryParse安全转换,避免直接抛出异常
        if (double.TryParse(data[0], System.Globalization.CultureInfo.InvariantCulture, out double size)
            && int.TryParse(data[1], out int visitCount))
        {
            newEntry.size = size;
            newEntry.visitCount = visitCount;
            newEntry.name = data[2];
            Webpages.Add(newEntry);
        }
        else
        {
            Console.WriteLine($"转换失败的行:{line},请检查数字格式");
        }
    }
}

2. 数字格式的区域文化冲突

比如你的系统默认用逗号做小数分隔符(比如欧洲地区),但文件里的数字是用点(123.45),这时候double.Parse会直接报错;反过来如果系统用点,文件里用逗号做小数位也会出问题。

解决办法:转换时指定不变文化(InvariantCulture),它会用点作为小数分隔符,不受系统区域设置影响,就是上面代码里用到的System.Globalization.CultureInfo.InvariantCulture。

3. 文件编码导致的隐藏特殊字符

有时候文件带BOM头(比如UTF-8 with BOM),用默认编码读取会带出隐藏的特殊字符,看起来字符串正常,但实际转换时会被判定为无效格式。

解决办法:打开文件时指定明确的编码,比如UTF8或者ASCII,根据你的文件实际情况选择。

最后提个小建议

尽量用TryParse替代Parse或Convert,它不会直接抛出异常,而是返回布尔值告诉你转换是否成功,同时输出转换后的结果,这样程序更健壮,还能快速定位错误行。

内容的提问来源于stack exchange,提问作者pops

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:44:00