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

C# Split函数传入制表符分隔符时出现额外转义字符问题

解决C#中制表符分隔符转义错误导致的文本解析失败问题

问题本质

从SSIS变量User::vFileDelimiter读取的制表符被存储为字符串形式的转义序列"\t",而非实际的制表符字符(ASCII值9)。转换为字符串后,该值会被解析为"\\t"(即两个字符:反斜杠和字母t),传入Split函数后会错误地用这两个字符分割文本,导致列数与映射不匹配,触发System.InvalidOperationException异常。

解决方案

1. 转义字符串为实际制表符(推荐)

使用Regex.Unescape()方法将字符串形式的转义序列转换为实际字符,确保分隔符是真正的制表符:

// 需引入System.Text.RegularExpressions命名空间
string FileDelimiter = Regex.Unescape(Dts.Variables["User::vFileDelimiter"].Value.ToString());

2. 手动替换转义序列

如果确定变量值仅为制表符的转义字符串,可直接替换:

string rawDelimiter = Dts.Variables["User::vFileDelimiter"].Value.ToString();
string FileDelimiter = rawDelimiter.Replace("\\t", "\t");

3. 从根源修正SSIS变量设置

直接在SSIS变量编辑器中,将vFileDelimiter的值设置为实际制表符:

  • 打开变量编辑器,选中vFileDelimiter
  • 点击值输入框,按下键盘Tab键输入制表符,而非手动输入\t两个字符

优化Split用法

确保分割时使用实际制表符,并移除空项避免列数不匹配:

// 替换原Split代码为:
string[] items = line.Trim().Split(new char[] { '\t' }, StringSplitOptions.RemoveEmptyEntries);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 12:10:36