在C#中包含反斜杠的子串

时间:2015-07-15 14:17:06

标签: c# string visual-studio-2010 substring

假设我有一个字符串string abc = "ROOT\abcd"。我想得到子串“abcd”。

使用abc.substring(4),我只得到“bcd”作为回报。似乎“a”无法识别,因为“\ a”是C#中的特殊字符。如何获取“abcd”的整个子字符串?

4 个答案:

答案 0 :(得分:6)

如果你想让你的字符串包含一个反斜杠,你需要使用反斜杠转义它,或者在字符串前加一个@ -sign:

string abc = @"ROOT\abcd";

string abc = "ROOT\\abcd";

编辑:如果您使用

创建了一个字符串
string a = "\a";

然后将其存储在您的数据库中,字符串和数据库都不会在该位置包含字母“a”。相反,它将包含一个特殊字符,在某些终端上会发出蜂鸣声或眨眼,但在大多数现代系统中,它只是不可见的。如果是这种情况而不是您想要的数据库,则需要以正确的方式再次存储数据。我建议你打印你希望包含反斜杠的字符串,看看它们是否确实如此。您也可以尝试select直接从sql server管理工作室包含反斜杠的字段(假设您使用的是sql server)并检查它们是否确实存在。

答案 1 :(得分:3)

根据您的示例,您无法\a是一个escape sequence字符作为铃声(警报)。

这意味着,您的字符串实际上没有任何abcd字符串。您的字符串包含ROOT\abcd字符串。

如果您可以将常规字符串文字更改为verbatim string literal,则字符串可以具有此功能。

string abc = @"ROOT\abcd";
abc.Substring(5) // returns abcd

或将你的/字符加倍;

string abc = "ROOT\\abcd";
abc.Substring(5) // returns abcd

答案 2 :(得分:0)

请在字符串文字的前面添加'@'。 另外,你需要使用Substring(5)来获得'abcd'。 4为您提供'\'

答案 3 :(得分:0)

这应该有效:

        string abc = @"ROOT\abcd";
        string s = abc.Substring(5);

编辑: “\ a”是一个转义序列。在字符串前使用“@”来获取逐字字面值