逐字字符串替换
Verbatim string replace
var a = "asdfgh\r";
Console.WriteLine(a.Contains(@"\r"));
var b = a.Replace(@"\r","").Replace(@"\n","");
var c = a.Replace("\r","").Replace("\n","");
Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);
“b”和“c”打印相同的字符串而“a”打印错误,
我试图将 \r 和 \n 替换为一个空字符,所以首先我尝试了下面的代码,“\r”和“\n”中有一个反斜杠,所以我决定在它们之前使用“@”;
var b = a.Replace(@"\r","").Replace(@"\n","")
但这没有用,
var c = a.Replace("\r","").Replace("\n","");
这行得通,所以我很困惑什么时候应该使用“@”字符?
您声明字符串 a
以回车 return 字符结尾:
var a = "asdfgh\r"; //it has a length of 7 when compiled
所以你必须把马车return换成空的:
Replace("\r","")
如果您已声明字符串以“反斜杠 r”结尾:
var a = @"asdfgh\r"; //it has a length of 8 when compiled
那么你将成功地用空替换“反斜杠 r”:
Replace(@"\r","")
这也行得通:
Replace("\r","")
因为双斜杠变成了单斜杠然后 r 是一个普通字符所以你要替换“反斜杠 r”而不是回车return
编译时,C#编译器在字符串中查找\,并根据某种规则转换后面的字符。在字符串之前使用 @ 关闭此功能。大多数情况下它对路径很有用。请记住,这是编译时的事情,而不是您需要对保存在运行时输入的数据的变量做的事情。在变量名前加上 @ 意味着不同的东西 - 允许您将变量称为保留字,如 string @for = "for"
- 可悲的做法;不要这样做
最终问题是您在声明字符串时不一致 - a
不是逐字字符串,所以它确实只有一个回车 return 字符,然后您试图替换使用逐字字符串(“反斜杠 r”是与“carriagereturn”
不同的字符串
var a = "asdfgh\r";
Console.WriteLine(a.Contains(@"\r"));
var b = a.Replace(@"\r","").Replace(@"\n","");
var c = a.Replace("\r","").Replace("\n","");
Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);
“b”和“c”打印相同的字符串而“a”打印错误,
我试图将 \r 和 \n 替换为一个空字符,所以首先我尝试了下面的代码,“\r”和“\n”中有一个反斜杠,所以我决定在它们之前使用“@”;
var b = a.Replace(@"\r","").Replace(@"\n","")
但这没有用,
var c = a.Replace("\r","").Replace("\n","");
这行得通,所以我很困惑什么时候应该使用“@”字符?
您声明字符串 a
以回车 return 字符结尾:
var a = "asdfgh\r"; //it has a length of 7 when compiled
所以你必须把马车return换成空的:
Replace("\r","")
如果您已声明字符串以“反斜杠 r”结尾:
var a = @"asdfgh\r"; //it has a length of 8 when compiled
那么你将成功地用空替换“反斜杠 r”:
Replace(@"\r","")
这也行得通:
Replace("\r","")
因为双斜杠变成了单斜杠然后 r 是一个普通字符所以你要替换“反斜杠 r”而不是回车return
编译时,C#编译器在字符串中查找\,并根据某种规则转换后面的字符。在字符串之前使用 @ 关闭此功能。大多数情况下它对路径很有用。请记住,这是编译时的事情,而不是您需要对保存在运行时输入的数据的变量做的事情。在变量名前加上 @ 意味着不同的东西 - 允许您将变量称为保留字,如 string @for = "for"
- 可悲的做法;不要这样做
最终问题是您在声明字符串时不一致 - a
不是逐字字符串,所以它确实只有一个回车 return 字符,然后您试图替换使用逐字字符串(“反斜杠 r”是与“carriagereturn”