.NET的编码\转义字符串

.NET的编码\转义字符串,.net,encoding,character-encoding,escaping,.net,Encoding,Character Encoding,Escaping,我有一串组合的空白:例如 "\t\r " 我需要在错误消息中显示它,但仅仅显示空白是没有帮助的 有没有一种方法可以对显示的字符串进行编码?如果您不特别需要C#转义约定,可以对字符串进行URL编码。这将为不可打印字符和空白字符提供可见编码。有关比较各种编码选项输出的表,请参阅 如果你真的需要C#escaping约定,你可以做一些简单的事情 string output = original.Replace("\t", "\\t").Replace("\r", "\\r); // etc 如果这

我有一串组合的空白:例如

"\t\r "
我需要在错误消息中显示它,但仅仅显示空白是没有帮助的


有没有一种方法可以对显示的字符串进行编码?

如果您不特别需要C#转义约定,可以对字符串进行URL编码。这将为不可打印字符和空白字符提供可见编码。有关比较各种编码选项输出的表,请参阅

如果你真的需要C#escaping约定,你可以做一些简单的事情

string output = original.Replace("\t", "\\t").Replace("\r", "\\r); // etc
如果这是为了偶尔输出错误消息,那么为每次调用.Replace创建新字符串的低效性将无关紧要。如果有关系,您可以创建一个方法/扩展方法,该方法循环遍历输入字符串中的每个字符,并根据需要输出原始字符或转义版本(例如,使用StringBuilder构建输出字符串)

更新

下面是一个扩展方法,它完全满足您的需要:


正常的转义不起作用,即@“\t\r”起作用了,还是我又错过了什么?@Sami:我想问题是他想通过编程将字符串“\t\r”转换为字符串“\\t\\r”,或者像Eric说的那样,将“Hello\tWorld”转换为“Hello\\tWorld”@Sami。它将被打印在错误消息中。好的。我不明白你为什么要显示双反斜杠,但我想我也不必:)@Sami:因为反斜杠会逃过一个反斜杠。以下是等效的:@“\t\r”和“\\t\\r”。性能还不是一个问题,它只适用于回归套件,并且仅适用于这种情况下的少数情况
Replace()
我认为可以做到这一点。我的强迫症患者希望有一个更优雅的方法。我们编写一次扩展方法,然后你就有了一个优雅的方法:-),但我不知道框架中有什么东西可以满足你的需要。把这个问题留一点时间;也许有什么我不知道的。嘿。。。我刚刚在StackOverflow上找到了一个扩展方法,它完全满足您的需要。我将重复回答这个问题。看看那个被接受的答案。不错,那是个好地方。干杯