Недавно ко мне обратился подписчик с просьбой разобраться в проблеме.
Есть присланный фрагмент кода, на котором проверяется равенство строк.
Загвоздка в том, что при видимом одинаковом значении
"5.1$1" проверка даёт false.Опытные могли догадаться, что дело в так называемых скрытых символах.
При обработке приложением строк, пришедших извне, надо быть готовым к такому сценарию.
Для начала можно посмотреть в дебаге на результат метода
ToCharArray(): он покажет весь массив символов, и врага можно будет увидеть в лицо.Как с ними бороться, зависит от ваших потребностей и возможностей:
▪️Ожидаете их только по краям? Тогда сойдёт
Trim▪️Когда хотите почистить внутри строки, можно прибегнуть к вызову
char.IsControl()▪️При особых запросах на очистку лишних символов уже придётся прибегнуть к кастомным фильтрациям с помощью статических методов
char (например, IsLetter || IsDigit) ну или регулярок
