Неочевидные проблемы



Недавно ко мне обратился подписчик с просьбой разобраться в проблеме.



Есть присланный фрагмент кода, на котором проверяется равенство строк.



Загвоздка в том, что при видимом одинаковом значении "5.1$1" проверка даёт false.



Опытные могли догадаться, что дело в так называемых скрытых символах.



При обработке приложением строк, пришедших извне, надо быть готовым к такому сценарию.



Для начала можно посмотреть в дебаге на результат метода ToCharArray(): он покажет весь массив символов, и врага можно будет увидеть в лицо.



Как с ними бороться, зависит от ваших потребностей и возможностей:



▪️Ожидаете их только по краям? Тогда сойдёт Trim



▪️Когда хотите почистить внутри строки, можно прибегнуть к вызову char.IsControl()



▪️При особых запросах на очистку лишних символов уже придётся прибегнуть к кастомным фильтрациям с помощью статических методов char (например, IsLetter || IsDigit) ну или регулярок