正则表达式 - DLE未处理

时间:2012-07-09 10:27:12

标签: c#-2.0

我需要在SOAP响应中丢弃ASCII控制字符,因为这些控制字符不允许形成有效的XML数据。

我使用下面的正则表达式来丢弃控制字符,

@ “[^ \ X09 \ X0A \ X0D \ x20- \ xD7FF \ xE000- \ xFFFD \ 10000倍-x10FFFF]”

但ASCII控制字符 - DLE(数据链接转义)未在上述REGEX中处理。

请帮我解决正则表达式,它将丢弃所有ASCII控制字符。

2 个答案:

答案 0 :(得分:0)

DLE是\x10,不在你的正则表达式中。

此外,您似乎也会使用\x20-\xD7FF丢弃所有字母数字字符。这是对的吗?

请参阅http://en.wikipedia.org/wiki/Control_character

答案 1 :(得分:0)

通过了给出的链接。

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本身就是有效的表达式。因此它没有被取代。我不熟悉正则表达式。如果我错了,请纠正我。