Заменить непечатаемые символы из строки - PullRequest
0 голосов
/ 10 мая 2018

Я создаю логику для замены непечатаемых символов в строке пробелом, просто я запутался, если это те же символы ASCII и символы Юникода, я рассмотрел, как это сделать с помощью функции regex.replace. но я не понимаю, как проверить, находится ли символ строки между приведенными ниже условиями.

Это требование, которое я получил, замените пробелом:

  • Все символы ASCII со значениями от 0 до 31.
  • Юникод-символы со значениями 127, 129, 141, 143, 144 и 157

Я пробовал это (я считаю, что это работает для символов ASCII), но могу ли я обрабатывать символы Unicode?

newPartNum = Regex.Replace(PartNum, @"[^\u0020-\u007E]", " ");

Любая помощь будет признательна.

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

С помощью Linq Вы можете проверить, является ли символ управляющим символом . Ниже я нацеливаюсь на удаление управляющих символов из строки -

string str = ""; // Whatever your string is. Comes here.
string res = new string(str.Where(c => !char.IsControl(c)).ToArray());
0 голосов
/ 10 мая 2018

Взгляните на метод IsControl типа структуры Char.Если по какой-либо другой причине речь идет о диапазоне управляющих символов.

Кроме того, использование диапазона допустимых символов в вашем регулярном выражении, безусловно, выполнимо, но может привести к путанице при работе с символами Юникода, поскольку диапазон большой.Может быть, лучше просто искать символы, которые нужно заменить.Снова, посмотрите на метод Char.IsControl для деталей.

...