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