PHPで単語を数字に変換する 質問する

PHPで単語を数字に変換する 質問する

単語として書かれた数値を整数に変換しようとしています。例えば、

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」として処理されます)

文字列をトークン化したら、右から左に移動します。

  1. POWER または文字列全体に到達するまで、右側からすべてのトークンを取得します。

  2. 次のパターンの停止ポイント後のトークンを解析します。

    特別
    10
    ユニット
    10 ユニット
    ユニット100
    ユニット 100 特別
    ユニット 100
    ユニット 100 ユニット
    ユニット 100 ユニット

    (これは、「1700」がこの文法では許可されていないことを前提としています)

    これにより、番号の最後の 3 桁が表示されます。

  3. 文字列全体で停止した場合は完了です。

  4. あるパワーで停止した場合は、より高いパワーまたは文字列全体に到達するまで、ステップ 1 から再度開始します。

おすすめ記事