我正在尝试将从反序列化 XML 文件检索到的值转换为
char
。
<Delimiter>\t</Delimiter>
当我将此 XML 反序列化为具有
string
属性的对象时,它变成:
"\\t"
但是,当我尝试使用以下代码来获取字符时:
char c = Convert.ToChar(stringValue);
我得到了例外:
System.FormatException: 'String must be exactly one character long.'
如果执行此代码,它会起作用:
char c = Convert.ToChar("\t");
如何将字符串
"\\t"
转换为 "\t"
以便将其转换为字符?
我尝试过
str = str.Replace("\\\\", "\\")
但这似乎并没有摆脱转义反斜杠。
文字
\t
被C#解释为单个制表符(0x9)字符在调用.ToChar()
之前。
此外,反序列化该 xml 后,您将NOT 得到
\\t
(三个字符)。您得到了 (\t
)(两个字符),但调试器试图提供过多帮助并转义 \
转义字符。
那么,如何转换两个
\
和t
字符并获得最终的制表符(0x9)字符结果?
Regex.Unescape()
来实现此目的。
在这里查看它的工作原理: