単語として書かれた数値を整数に変換しようとしています。例えば、
iPhone has two hundred and thirty thousand seven hundred and eighty three apps
なるだろう
iPhone has 230783 apps
これを実行するライブラリまたは関数はありますか?
ベストアンサー1
数字から単語への変換について議論しているページはたくさんあります。しかし、逆方向についてはあまり多くありません。私が見つけた最良のものは、Ask Yahoo の疑似コードでした。http://answers.yahoo.com/question/index?qid=20090216103754AAONnDz良いアルゴリズムとしては:
全体的には、トークン (数字に変換される単語) の検索と文法の適用という 2 つのことを行っています。つまり、非常に制限された言語のパーサーを構築していることになります。
必要なトークンは次のとおりです。
パワー: 千、百万、十億
百: 百
十:
二十、三十...九十 単位: 1、2、3、...九、
特別: 10、11、12、...十九(「and」は意味がないので削除してください。ハイフンは 2 つのトークンに分割します。つまり、65 は「sixty」「five」として処理されます)
文字列をトークン化したら、右から左に移動します。
POWER または文字列全体に到達するまで、右側からすべてのトークンを取得します。
次のパターンの停止ポイント後のトークンを解析します。
特別
10
ユニット
10 ユニット
ユニット100
ユニット 100 特別
ユニット 100
ユニット 100 ユニット
ユニット 100 ユニット(これは、「1700」がこの文法では許可されていないことを前提としています)
これにより、番号の最後の 3 桁が表示されます。
文字列全体で停止した場合は完了です。
あるパワーで停止した場合は、より高いパワーまたは文字列全体に到達するまで、ステップ 1 から再度開始します。