C#中如何将File.ReadAllLines读取的文件内容转换为int数组
C# 读取文本文件后将字符串数组转为int数组实现方案
你可以通过逐行解析文本内容的方式完成类型转换,根据对文件内容的确定性程度,可选择两种实现方式:
方式1:文件内容全为合法整数(最简实现)
如果你确认input.txt中每一行都是纯整数、不存在空行、非数字字符的情况,可以直接用int.Parse配合LINQ完成转换:
- 首先在代码文件顶部引入LINQ命名空间:
using System.Linq;
- 修改原有的文件读取逻辑,直接生成int数组,完整代码如下:
static void Main(string[] args) { // 读取所有文本行后逐行转为整数,最终生成int类型数组 int[] lines = System.IO.File.ReadAllLines(@"input.txt") .Select(line => int.Parse(line.Trim())) .ToArray(); System.Console.WriteLine("Contents of input.txt = "); foreach (int num in lines) { Console.WriteLine("\t" + num); } Console.WriteLine("Press any key to exit."); Console.ReadKey(); }
代码里的.Trim()用于自动清除每行首尾可能存在的空格、制表符、换行符,避免因多余空白字符导致解析报错。
方式2:兼容非法内容(鲁棒性更强)
如果无法保证文件内容完全合规(比如存在空行、备注文本、非数字内容),建议用int.TryParse做校验过滤,跳过无效行,避免程序运行时抛出格式异常:
static void Main(string[] args) { int[] lines = System.IO.File.ReadAllLines(@"input.txt") // 先过滤掉空行、全空白字符行 .Where(line => !string.IsNullOrWhiteSpace(line)) .Select(line => { bool parseOk = int.TryParse(line.Trim(), out int num); return new { parseOk, num }; }) // 只保留解析成功的有效整数 .Where(item => item.parseOk) .Select(item => item.num) .ToArray(); System.Console.WriteLine("Valid integer contents of input.txt = "); foreach (int num in lines) { Console.WriteLine("\t" + num); } Console.WriteLine("Press any key to exit."); Console.ReadKey(); }
注意:如果使用旧版.NET Framework时提示找不到LINQ相关方法,请确认项目已引用
System.Core程序集;新版.NET、.NET Core环境默认已集成该能力,无需额外配置。
内容的提问来源于stack exchange,提问作者Virtual
相关产品推荐
相关产品推荐

