• 締切済み

文字列の処理

早速ですが質問です。 2つの文字列を入力し、一字一句正しければ「正しい」 間違っている文字数3文字以内なら「大体正しい」 4文字以上間違っている場合は「正しくない」と表示させるプログラムがわかりません。 例えば「perfomance」なら    「perfomance」(誤0)で「正しい」    「perfomazzz」(誤3)で「大体正しい」    「perfomzzzz」(誤4)で「正しくない」といった感じです。 わかりずらくて申し訳ありません。 すいませんが、ご教授よろしくお願いします。

みんなの回答

  • yama1718
  • ベストアンサー率41% (670/1618)
回答No.6

No.2の補足です。 すみませんPCの調子が悪くて二重に回答が入ってしまいました。 開発言語が何か書かれていないのですが、 PHP言語では文字列関数にlevenshteinが用意されています。 レーベンシュタイン距離なら質問の例で言われている値が、そのまま求められます。

  • eroermine
  • ベストアンサー率18% (83/444)
回答No.5

ひところはやったファジィ制御ですね。 "fuzzy search" 等で検索して見てください。

  • yama5140
  • ベストアンサー率54% (136/250)
回答No.4

>2つの文字列を入力し、一字一句正しければ「正しい」 1.「一句」毎の区切り(全角・半角空白、その数)の違いは、判定するのですか?。 2.2つの文字列の長さは「同じ」、が前提なのですか?   ・前提の場合、      例えば一方が、「abc defg hijk 」で、他方が      「bc defg hijk a」は、「誤」はいくつになるのでしょうか?。   ・前提でない場合、    「ご教授よろしくお願いします」と、    「ご教示方よろしくお願いします」の場合、「誤」はいくつになるのでしょうか?。 >間違っている文字数3文字以内なら「大体正しい」 >4文字以上間違っている場合は「正しくない」と表示させるプログラムがわかりません。 3.入力文字列が例えば、40文字の場合と3文字の場合でも、その判定基準は同じですか?。   例えば、入力文字列が40文字の場合、4文字違えば、「正しくない」ですか?。   例えば、入力文字列が3文字の場合、全部違っていても「大体正しい」ですか?。 >わかりずらくて申し訳ありません。  以上、補足頂けると多少判り易くなるかも。

  • yama1718
  • ベストアンサー率41% (670/1618)
回答No.3

レーベンシュタイン距離という、文字列の類似度の判定方法があります。 スペルチェックとか検索などで使われているアルゴリズムです。 大まかには頭から文字を判定していって、同じ,違う,抜けている,などをカウントします。 リンク先のソースを参考にして組み込むだけでも使えると思います。 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)
回答No.2

レーベンシュタイン距離という、文字列の類似度の判定方法があります。 スペルチェックとか検索などで使われているアルゴリズムです。 大まかには頭から文字を判定していって、同じ,違う,抜けている,などをカウントしていきます。 リンク先のソースを参考にして組み込むだけでも使えると思います。 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)
回答No.1

あなたが今、(誤0)とか(誤3)と書いたのをプログラムに数えさせるだけです。

関連するQ&A