我需要丢弃 SOAP 响应中的 ASCII 控制字符,因为这些控制字符不允许形成有效的 XML 数据。
我使用下面的正则表达式来丢弃控制字符,
@"[^\x09\x0A\x0D\x20-\xD7FF\xE000-\xFFFD\x10000-x10FFFF]"
但是上面的 REGEX 没有处理 ASCII 控制字符 - DLE(数据链路转义)。
请帮助我处理正则表达式,它将丢弃所有 ASCII 控制字符。
我需要丢弃 SOAP 响应中的 ASCII 控制字符,因为这些控制字符不允许形成有效的 XML 数据。
我使用下面的正则表达式来丢弃控制字符,
@"[^\x09\x0A\x0D\x20-\xD7FF\xE000-\xFFFD\x10000-x10FFFF]"
但是上面的 REGEX 没有处理 ASCII 控制字符 - DLE(数据链路转义)。
请帮助我处理正则表达式,它将丢弃所有 ASCII 控制字符。
通过给出的链接。
http://www.theplancollection.com/house-plan-related-articles/hexadecimal-value-invalid-character
根据链接,下面提到的正则表达式适用于一组有效的 XML 字符。
string re = @"[^\x09\x0A\x0D\x20-\xD7FF\xE000-\xFFFD\x10000-x10FFFF]";
return Regex.Replace(text, re, "");
我相信 DLE 本身就包含在这组有效的表达式中。因此它没有被替换。我不熟悉正则表达式。如果我错了,请纠正我。
DLE 是\x10
,那不在您的正则表达式中。
此外,您似乎也用 . 丢弃了所有字母数字字符\x20-\xD7FF
。那是对的吗?