2011-06-17 3 views
0

Есть некоторые шестнадцатеричные значения, спрятанные в некоторых из моих значений DB, которые вызывают у меня некоторые проблемы, у кого-то есть RegEx для их очистки?RegEx для удаления шестнадцатеричных charecters из строки в C#

Здесь ошибка я получаю:

'', hexadecimal value 0x19, is an invalid character. 

Это сообщение объясняет мою проблему полностью, но я ищу RegEx решения: http://seattlesoftware.wordpress.com/2008/09/11/hexadecimal-value-0-is-an-invalid-character/

+0

Не будут ли тогда данные ошибаться? – leppie

+0

Можете ли вы дать образец ввода? – BrunoLM

+0

Это такие проблемы, которые заставляют меня недоверчивать xml как формат кодирования данных общего назначения. Вы не можете просто сбросить значение, как в XML-документ. :-( –

ответ

4

вместо построения XML строк по конкатенации, вы должны используйте классы обработки XML, поставляемые с .NET. Они будут правильно кодировать опасные символы как XML-сущности и создавать хорошо сформированный XML.

Кроме того, регулярные выражения не очень хорошо подходят для обработки XML.

+0

В следующей ссылке есть отличная информация об .NET-инфраструктурах для XML строковое кодирование/декодирование. Я использовал их с большим успехом: http: // stackoverflow.com/questions/2597056/is-there-a-xmlencode-xmldecode-for-net – Lane

+0

Значения, которые будут преобразованы в XML, имеют шестнадцатеричные значения в них, которые мне никогда не понадобятся ни при каких обстоятельствах. Я не собираюсь создавать XML, а пытаюсь очистить объекты до их преобразования. – Slee

+0

@Slee: Я не думаю, что вы используете «шестнадцатеричный» правильно. Вы хотите удалить управляющие символы, такие как возврат каретки и перевод строки, или расширенные (не ASCII) символы, такие как буквы с умляутами и акцентами? –

1

Я мог бы, но это было бы также любое вхождение мертвых, говядины, пчелы, быть, б, в DEA в дорогом, любой десятичной цифры, любого а, б, в, г, д

...

I oul, ut it woul lso ny ourn o , , , , , th in r, ny iml gt, ny , , , ,

...

см?

0

вам нужно что-то вроде Do ....

Regex regex = new Regex("0x\\d\\d"); 

    String Input = "this0x34is my 0x45 test 0x11"; 

    string Result = regex.Replace(Input, " "); 
0

Я знаю, что вы надеетесь на Regex, но вы пробовали System.Security.SecurityElement.Escape? Я считаю, что этот метод специально предназначен для вашего использования.

Смежные вопросы