我注意到C#为路径添加了额外的斜杠(\
)。考虑路径C:\Test
。当我在文本可视化器中使用此路径检查字符串时,实际字符串为C:\\Test
。
这是为什么?它让我感到困惑,因为有时我可能想要将路径分开(使用string.Split()
),但不得不想知道使用哪个字符串(一个或两个斜杠)。
答案 0 :(得分:16)
使用\\
是因为\
是转义字符,需要代表单个\
。
所以它说将第一个\
视为转义字符,然后将第二个\
视为实际值。如果不是,则第一个\
之后的下一个字符将被解析为转义字符。
以下是可用转义字符列表:
\' - single quote, needed for character literals
\" - double quote, needed for string literals
\\ - backslash
\0 – Null
\a - Alert
\b - Backspace
\f - Form feed
\n - New line
\r - Carriage return
\t - Horizontal tab
\v - Vertical quote
\u - Unicode escape sequence for character
\U - Unicode escape sequence for surrogate pairs.
\x - Unicode escape sequence similar to "\u" except with variable length.
编辑:要回答有关Split
的问题,应该没问题。像往常一样使用Split
。 \\
将仅被视为\
的一个字符。
答案 1 :(得分:10)
.Net不会在此处向您的字符串添加任何内容。你看到的是调试器如何选择显示字符串的效果。 C#字符串可以用2种形式表示
@
符号为前缀,无需转义\\
个字符\\
字符需要自行转义调试器将字符串文字显示为普通字符串与逐字字符串。这只是一个显示问题,它不会影响它的潜在价值。
答案 2 :(得分:6)
调试器可视化器以C#代码中出现的形式显示字符串。由于\
用于转义非verbatum C#字符串中的字符,因此\\
是正确的转义表单。
答案 3 :(得分:0)
好的,所以上面的答案并不完全正确。因此,我正在为读这篇文章的下一个人添加我的发现。
如果您正在从外部源读取所述字符串,则无法使用上表中的任何字符拆分字符串。
即,
string[] splitStrings = File.ReadAllText([path]).Split((char)7);
不会被这些字符分开。但是内部创建的字符串工作正常。
即,
string[] splitStrings = "hello\agoodbye".Split((char)7);
对于从文件中读取文本的其他方法,这可能不适用。我不确定,因为我没有用其他方法测试过。考虑到这一点,最好不要使用这些字符来分隔字符串!