@JustTryAgain
Junior web-dev

Как лучше всего привести числа текстового формата(string) в числа(int)?

Есть задача реализовать калькулятор, который на входе получает числа и операторы строкового формата, преобразует их в числа, и на выходе выдает число. Пример: шестьдесят два плюс сорок четыре, и ответом получаем 104. И если с калькулятором все более менее понятно, то вот как лучше всего (да и как вобще) приводить текстовые данные в числа, не понятно вообще. Может быть есть какие то готовые решения? Буду рад любой подсказке в какую сторону копать.
  • Вопрос задан
  • 116 просмотров
Решения вопроса 1
coderisimo
@coderisimo Куратор тега JavaScript
Вот "рыба" )).
Парсилка одного числа. типа 23, 42, 54, 35 итд. Все единицы, десятки и сотни писать лень.

Но это самый простой случай, а как быть с миллиардами , тысячами итд ?

Делаешь сплит строки по регулярке где разделители 'тысяч' , 'миллионов' и прочие сложные случаи. Получаешь наборы, где последний элемент или множитель или просто число.

После этого можно использовать тот же механизм , где, возможно, добавляется множитель. Пример -
двадцать шесть миллионов триста двадцать шесть -

после сплита получаем два набора :
1) двадцать шесть миллионов
2) триста двадцать шесть

проверяем последний элемент в каждом наборе.
в первом это "миллионов". Особый случай - множитель!
Отбрасываем последний элемент (множитель) . и распознаем 26 , как обычное число, далее "миллионов" - дает нам множитель - 1000 000. результирующее число 26 * на множитель (1000 000). = . 26 000 000.

второй набор в конце просто число. ок. стандартное преобразование.
Последний этап - сумма двух чисел.

Это общая идея. Разумеется , будут нюансы , но так даже интереснее )))
Например , валидация - "Две тысячи пять" - ok , а "Пять две тысячи" нет. Хотя приведенный выше алгоритм это скушает. Здесь тоже можно что-то придумать, и как мне кажется даже довольно простой алгоритм проверки валидности введенного текстом числа (есть идея). Простор для креативу!

Удачи
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@justAnotherCluelessUser
Парсинг, парсинг и ещё раз парсинг...
Не так уж и сложно перечислить все возможные варианты слов для чисел, к примеру...
1: один, одна
2: два две-
и т.д.

самое сложное будит с дясятками и сотнями...
Но просто структуру пойми.
10:десят, (на)дцать и другие формы...
100 - сто, сти по аналогии с 10

А там умножай да изменяй число до знака
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы