在 C# 中将存储为字符串的制表符转换为字符

问题描述 投票:0回答:1

我正在尝试将从反序列化 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("\\\\", "\\")
但这似乎并没有摆脱转义反斜杠。

c# .net .net-core
1个回答
0
投票

文字

\t
被C#解释为单个制表符(0x9)字符调用
.ToChar()
之前。

此外,反序列化该 xml 后,您将NOT 得到

\\t
(三个字符)。您得到了 (
\t
)(两个字符),但调试器试图提供过多帮助并转义
\
转义字符。

那么,如何转换两个

\
t
字符并获得最终的制表符(0x9)字符结果?

您可以使用

Regex.Unescape()
来实现此目的。

在这里查看它的工作原理:

https://dotnetfiddle.net/OYE2Nf

© www.soinside.com 2019 - 2024. All rights reserved.