| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Корректно преобразовать строку в число, |
| Автор: Real McCoy 22.1.2008, 19:55 | ||||||
| Здравствуйте все! О преобразовании чисел, выраженных в виде строки я тут читал. Сам пробовал два способа: 1. Проверки с помощью исключения:
2. Проверки с помощью регэкспа:
Сейчас, столкнулся я со следующей проблемой: на форме есть JSpinner с моделью SpinnerNumberModel, редактирование поля у спиннера разрешено. Необходима валидация введённого пользователем. Введённое в поле Спиннера получается путём такого страшного выражения:
И оказывается, что например в числе 1000, которое после получения выглядит как "1 000" (введено не пользователем, а пролистано спиннером), между 1 и 0 не пробел, а символ с десятичным кодом 160. Если эту строку попытаться проверить любым из двух способов, то оно не распознается как число. Вопрос: как всё-таки сделать валидацию на то, что в спиннере число? |
| Автор: powerOn 22.1.2008, 20:45 | ||
А почему вы получаете число из вида, а не из модели?
|
| Автор: Real McCoy 23.1.2008, 12:17 |
| Потому что модель вернёт последнее корректное значение спиннера. А мне надо предупредить пользователя, если он ввёл что-то неправильное, что значение спиннера откачено к предыдущему. Иначе он просто не заметит этого, т.к. на форме довольно много контролов. |
| Автор: Maksym 23.1.2008, 12:23 |
| Real McCoy А если удалить из строки все символы с десятичным кодом 160 и применить описанный тобой способ? |
| Автор: Real McCoy 23.1.2008, 14:25 | ||
| Maksym, В конце концов я так и сделал. Только символ для замены на пустой получаю у эдитора спиннера:
Правда выглядит это как workaround. |