2014-12-31 2 views

ответ

2

Вы можете использовать классы символов, как показано here.

Упрощенная версия кода: new Regex("[^\\p{L}0-9 ]").Replace("this is a test ČĆŽPŠĐ ä 244 $%^&*", String.Empty);

Это Урожайность: this is a test ČĆŽPŠĐ ä 244.

\\p{L} В этом случае обозначаются наборы символов, которые маркируют буквы на разных языках.

1

'Č', 'Ć', 'Ž', 'Š' и 'Đ' являются частью категории Юникод «Письмо, верхний регистр». Вы можете использовать \p{..} для сопоставления с символами определенной категории Unicode, где .. является (коротким) наименованием категории.

Например, \p{Lu} соответствует всем символам категории «Letter, Uppercase» и \p{Ll} соответствует всем символам категории «Letter, Lowercase».

Так просто заменить a-z с \p{Ll} и A-Z с \p{Lu} (только убедитесь, что вы избежать \ или использовать дословный строковый литерал для выражения).

Для получения дополнительной информации см. http://msdn.microsoft.com/en-us/library/20bw873z%28v=vs.110%29.aspx#CategoryOrBlock и http://msdn.microsoft.com/en-us/library/20bw873z%28v=vs.110%29.aspx#SupportedUnicodeGeneralCategories для всех поддерживаемых категорий.

2

Просто попробуйте это:

Regex.Replace(source, "[^a-zA-Z0-9% @$\"!#%&'()*+,./:;<>=?\u0100-\u01FF-]", string.Empty); 

немецкий: U+0100 ->U+01FF

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