- 締切済み
文字列の処理
早速ですが質問です。 2つの文字列を入力し、一字一句正しければ「正しい」 間違っている文字数3文字以内なら「大体正しい」 4文字以上間違っている場合は「正しくない」と表示させるプログラムがわかりません。 例えば「perfomance」なら 「perfomance」(誤0)で「正しい」 「perfomazzz」(誤3)で「大体正しい」 「perfomzzzz」(誤4)で「正しくない」といった感じです。 わかりずらくて申し訳ありません。 すいませんが、ご教授よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- yama1718
- ベストアンサー率41% (670/1618)
No.2の補足です。 すみませんPCの調子が悪くて二重に回答が入ってしまいました。 開発言語が何か書かれていないのですが、 PHP言語では文字列関数にlevenshteinが用意されています。 レーベンシュタイン距離なら質問の例で言われている値が、そのまま求められます。
- eroermine
- ベストアンサー率18% (83/444)
ひところはやったファジィ制御ですね。 "fuzzy search" 等で検索して見てください。
- yama5140
- ベストアンサー率54% (136/250)
>2つの文字列を入力し、一字一句正しければ「正しい」 1.「一句」毎の区切り(全角・半角空白、その数)の違いは、判定するのですか?。 2.2つの文字列の長さは「同じ」、が前提なのですか? ・前提の場合、 例えば一方が、「abc defg hijk 」で、他方が 「bc defg hijk a」は、「誤」はいくつになるのでしょうか?。 ・前提でない場合、 「ご教授よろしくお願いします」と、 「ご教示方よろしくお願いします」の場合、「誤」はいくつになるのでしょうか?。 >間違っている文字数3文字以内なら「大体正しい」 >4文字以上間違っている場合は「正しくない」と表示させるプログラムがわかりません。 3.入力文字列が例えば、40文字の場合と3文字の場合でも、その判定基準は同じですか?。 例えば、入力文字列が40文字の場合、4文字違えば、「正しくない」ですか?。 例えば、入力文字列が3文字の場合、全部違っていても「大体正しい」ですか?。 >わかりずらくて申し訳ありません。 以上、補足頂けると多少判り易くなるかも。
- yama1718
- ベストアンサー率41% (670/1618)
レーベンシュタイン距離という、文字列の類似度の判定方法があります。 スペルチェックとか検索などで使われているアルゴリズムです。 大まかには頭から文字を判定していって、同じ,違う,抜けている,などをカウントします。 リンク先のソースを参考にして組み込むだけでも使えると思います。 http://www.merriampark.com/ldobjc.htm http://www.merriampark.com/ld.htm http://www.phonethica.net/nao-tokui/%E6%96%87%E5%AD%97%E5%88%97%E3%81%AE%E9%A1%9E%E4%BC%BC%E5%BA%A6-levenshtein%E8%B7%9D%E9%9B%A2/ http://ja.wikipedia.org/wiki/%E3%83%AC%E3%83%BC%E3%83%99%E3%83%B3%E3%82%B7%E3%83%A5%E3%82%BF%E3%82%A4%E3%83%B3%E8%B7%9D%E9%9B%A2
- yama1718
- ベストアンサー率41% (670/1618)
レーベンシュタイン距離という、文字列の類似度の判定方法があります。 スペルチェックとか検索などで使われているアルゴリズムです。 大まかには頭から文字を判定していって、同じ,違う,抜けている,などをカウントしていきます。 リンク先のソースを参考にして組み込むだけでも使えると思います。 http://www.merriampark.com/ldobjc.htm http://www.merriampark.com/ld.htm http://www.phonethica.net/nao-tokui/%E6%96%87%E5%AD%97%E5%88%97%E3%81%AE%E9%A1%9E%E4%BC%BC%E5%BA%A6-levenshtein%E8%B7%9D%E9%9B%A2/ http://ja.wikipedia.org/wiki/%E3%83%AC%E3%83%BC%E3%83%99%E3%83%B3%E3%82%B7%E3%83%A5%E3%82%BF%E3%82%A4%E3%83%B3%E8%B7%9D%E9%9B%A2
- koko_u_
- ベストアンサー率18% (459/2509)
あなたが今、(誤0)とか(誤3)と書いたのをプログラムに数えさせるだけです。