Я пытаюсь взять строку, которая является простым математическим выражением, удалить все пробелы, удалить все повторяющиеся операторы, преобразовать в однозначные числа и затем выполнить оценку.
Например, строка типа «2 7 + * 3 * 95» должна быть преобразована в «2 + 3 * 9», а затем оценена как 29.
Вот что у меня есть:
expression.slice!(/ /) # Remove whitespace
expression.slice!(/\A([\+\-\*\/]+)/) # Remove operators from the beginning
expression.squeeze!("0123456789") # Single digit numbers (doesn't work)
expression.squeeze!("+-*/") # Removes duplicate operators (doesn't work)
expression.slice!(/([\+\-\*\/]+)\Z/) # Removes operators from the end
puts eval expression
К сожалению, это не делает однозначные числа и не удаляет дубликаты операторов, как я ожидал. Есть идеи?