我有一个带有双反斜杠的长字符串(路径),我想用单反斜杠替换它:
string a = "a\b\c\d";
string b = a.Replace(@"\", @"");
此代码不起任何作用。。。
b
保持"a\b\c\d"
我还尝试了不同的反斜杠组合,而不是使用@
,但没有成功。
因为您在声明a
时没有使用@
,所以字符串a
在您的示例中不包含任何双斜杠。事实上,在您的示例中,a == "abcd"
,所以Replace
找不到任何可替换的内容。尝试:
string a = @"a\b\c\d";
string b = a.Replace(@"\", @"");
在C#中,不能有像"abcd"
这样的字符串,因为有一个特殊的含义:它创建了一个转义序列和一个后面的字母(或数字组合)。
b
实际上代表退格,c
和d
是无效的转义序列(编译器会抱怨"无法识别的转义序列")。
那么,如何使用简单的创建字符串呢?您必须使用反斜杠来对反斜杠进行反斜杠:
\
(它是表示单个反斜杠的反斜杠序列)。
这意味着字符串"a\b\c\d"
实际上表示abcd
(它不表示a\b\c\d
,因此没有双反斜杠)。如果你试着打印这个字符串,你会自己看到的。
C#还有一个称为逐字字符串文字(以@
开头的字符串)的特性,它允许您编写@"abcd"
而不是"a\b\c\d"
。
你错了。"\"
返回(已知为逃逸)
string a = "a\b\c\d";
System.Console.WriteLine(a); // prints abcd
string b = a.Replace(@"\", @"");
System.Console.WriteLine(b); // prints abcd
您甚至不需要string b = a.Replace(@"\", @"");
这适用于
您甚至不需要字符串b=a。替换(@"\",@"\");
但就像我们通过c代码生成dos命令一样。。。例如:-删除文件这将有助于
我在UWP应用程序的代码中做到了这一点。
foreach (var item in Attendances)
{
string a = item.ImagePath;
string b = a.Replace(@"\", "/");
string c = a.Replace("\", "/");
Console.WriteLine(b);
Console.WriteLine(a);
item.ImagePath = c;
}
而那些没有@符号的才是真正起作用的。这是C#8和C#9