有很多页面讨论从数字到单词的转换。反方向的数量不多。
以获取一种不错的算法:
好吧,总的来说,您正在做两件事:查找标记(转换为数字的单词)和应用语法。简而言之,您正在为一种非常有限的语言构建解析器。
您需要的令牌是:
力量:千,百万,十亿
一百:十
十:二十,三十…九十
单位:一,二,三,…九,
特殊:十,十一,十二,…十九(删除所有没有意义的“和”。将连字符分成两个记号。即应将“ 65”处理为“ 60”“五个”)
标记完字符串后,从右向左移动。
从右侧抓取所有标记,直到您击中POWER或整个弦为止。
在这些模式的停止点之后解析令牌:
特殊
十
单位
十单位
一百
单位一百特殊
单位一百
单位一百
单位一百单位(这假定该语法中不允许“一千七百”)
这将为您提供电话号码的后三位数字。
如果您停在整个字符串上,那么您就完成了。
如果您停在电源处,请从步骤1重新开始,直到达到较高的电源或整个弦为止。



