Первый случай относительно сложный - я бы сказал, что разумный способ сделать это - найти кого-то, кто уже сделал это, и использовать его код. Если вы не можете найти кого-то, следующая самая разумная вещь, вероятно, состоит в том, чтобы заново решить (или пересмотреть) проблему, чтобы она не была нужна. Помимо этого, я думаю, что вы в написании парсера ...
Второй случай так же тривиален, как уже предложенный to_i. Вы также можете использовать регулярное выражение, я полагаю:
"1000000th".scan(/\d+/).first.to_i #=> 1000000