C#调用string.Split()按反斜杠分割字符串无效如何解决
问题根因
这是基础的字符转义认知错误,整体实现思路没有问题:
- 你已经明确数据分隔符是
\r(ASCII 13,回车控制符),但代码中Split传入的参数是'\\',这个写法匹配的是字面量反斜杠字符(ASCII 92),和你需要识别的回车符完全是两个不同字符,自然无法完成分割。 - 你之前参考的反斜杠分割相关内容和当前需求场景完全不匹配,你根本不需要分割反斜杠,属于混淆了转义写法和实际控制符的对应关系。
修正代码
直接把Split的匹配字符换成实际的回车符即可,建议同时兼容Windows系统常见的\r\n换行组合,自动过滤分割产生的空字符串项:
private void ExtractMeasurements (string Data) { int TotalMeasurements = frmMain.MeasTotal; List<string> Measurements = new List<string>(); // 按回车/换行分割,自动移除空条目适配不同换行格式 Measurements.AddRange( Data.Split(new[] {'\r', '\n'}, StringSplitOptions.RemoveEmptyEntries) ); // 拆分完成后即可将Measurements集合映射绑定到DataGridView控件展示 }
注意事项
- C#语法中,
\r本身就是单个转义字符,代表回车控制符,不需要额外叠加反斜杠;只有当你需要匹配文本里实实在在的反斜杠符号时,才需要写'\\'或者逐字字符串写法@"\"。 - 从调试现象可以判断,原始字符串里的换行是标准控制字符,不是反斜杠+r的字面文本组合,上述修正代码可以直接拆分得到独立数据项。
内容的提问来源于stack exchange,提问作者ElectricRay81
相关产品推荐
相关产品推荐

