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

C#中如何将反序列化得到的\t字符串转换为制表符char?

问题场景
  • 从XML节点<Delimiter>\t</Delimiter>反序列化后,得到的字符串值为"\\t"(实际是两个字符:\和t)
  • 执行Convert.ToChar(stringValue)时抛出异常:System.FormatException: 'String must be exactly one character long.'
  • 但直接执行Convert.ToChar("\t")能正常获取制表符类型的char
  • 尝试用str = str.Replace("\\\\", "\\")无法解决问题
解决方案

方法1:用Regex.Unescape解析转义序列(推荐)

这个方法能自动处理所有标准的转义字符(比如\t、\n、\r、\\等),代码示例:

using System.Text.RegularExpressions;

// 反序列化得到的字符串
string serializedValue = "\\t";
// 解析转义序列,得到实际的制表符字符串
string unescapedValue = Regex.Unescape(serializedValue);
// 转换为char类型
char delimiter = Convert.ToChar(unescapedValue);

方法2:针对特定转义符手动替换

如果只需要处理\t这一种情况,可以直接替换目标字符串:

string serializedValue = "\\t";
string unescapedValue = serializedValue.Replace("\\t", "\t");
char delimiter = Convert.ToChar(unescapedValue);

为什么str.Replace("\\\\", "\\")无效?

你的原始字符串"\\t"在内存中实际是\和t两个字符,Replace("\\\\", "\\")的作用是把连续两个反斜杠替换成一个,但你的字符串里只有单个反斜杠(显示为\\是因为控制台/调试器的转义显示),所以这个替换逻辑不匹配,自然不会生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 09:25:02