如何删除所有转义字符(不是特殊字符)

Paw*_*Zaw 0 c#

我正在解析一些 WMI 查询结果,Powershell 中的一些空值Get-CimInstance"\0"C# 的ManagementObjectSearcher.

我试图过滤掉它们并用 null/空字符串替换,但我遇到了一些我不完全理解的东西:

s = "\0"; // assigned by ManagementObjectSearcher, value displayed by VS 2019 debugger
var t1 = s == "\0";  // true
var t2 = s == @"\0"; // false
var t3 = string.IsNullOrWhiteSpace(s); // false
Run Code Online (Sandbox Code Playgroud)

该值在调试器中s显示"\0",但当我单击它时,它什么也不显示(空字符串)。据我了解,\是用来转义特殊字符的,但是我没有找到任何关于 的信息"\0"

摆脱像这样的所有“空但不空”值的最佳方法是什么?

Jon*_*eet 5

它基本上是 U+0000 - “空”字符。(有关完整列表,请参阅C# 转义序列的文档string.Replace。)您可以正常使用:

string filtered = original.Replace("\0", "");
Run Code Online (Sandbox Code Playgroud)