如何使用TextInfo.ListSeparator替代逗号拆分CSV指定行到数组
改用TextInfo.ListSeparator处理CSV行分割的解决方案
嘿,我懂你想替换硬编码逗号、改用系统区域适配的列表分隔符来处理CSV行的需求——这确实是个更鲁棒的做法,毕竟不同地区的系统默认列表分隔符可能不一样(比如不少欧洲国家会用分号代替逗号)。
下面是修改后的完整代码,我已经把TextInfo.ListSeparator完美整合进去了:
using System.Globalization; // 记得引用这个命名空间,不然用不了TextInfo var resultPath = GetFilePath(); string[] lines = System.IO.File.ReadAllLines(resultPath); // 获取当前系统区域设置对应的列表分隔符 var listSeparator = CultureInfo.CurrentCulture.TextInfo.ListSeparator; // 用该分隔符分割指定行的内容 string[] values = lines[result.LineNumber - 1].Split(new string[] { listSeparator }, StringSplitOptions.None);
几个细节说明:
- 必须引入
System.Globalization命名空间,因为TextInfo和CultureInfo都属于这个模块; CultureInfo.CurrentCulture.TextInfo.ListSeparator会自动读取当前系统的默认列表分隔符,完美适配不同地区的系统设置;- 这里用
Split的字符串数组重载版本,是为了兼容极少数分隔符为多字符的场景,比直接传单个字符更严谨; - 如果你的CSV存在字段包含分隔符并被引号包裹的复杂情况,单纯的
Split可能会出错,但如果是结构简单的CSV,这个方案完全够用。
内容的提问来源于stack exchange,提问作者Hari
相关产品推荐
相关产品推荐

