9

プログラムの検索機能に提案機能を持たせようとしています。たとえば、検索セクションに janw doe と入力すると、NO MATCH が出力されます。ジェーン ドウのことですか? 問題が何であるかわからない、おそらく文字/文字列の比較に関係している..両方の変数をchar型として比較しようとしました.eg char temp -->temp.Contains ...などですが、エラーが表示されます(charには、Contains の定義が含まれていません)。これについて何か助けていただければ幸いです!8)

if (found == false)
        {
            Console.WriteLine("\n\nMATCH NOT FOUND");
            int charMatch = 0, charCount = 0;
            string[] checkArray = new string[26];
            //construction site  /////////////////////////////////////////////////////////////////////////////////////////////////////////////
            for (int controlLoop = 0; controlLoop < contPeople.Length; controlLoop++)
            {
                foreach (char i in userContChange)
                {
                    charCount = charCount + 1;
                }
                for (int i = 0; i < userContChange.Length; )
                {
                    string temp = contPeople[controlLoop].name;
                    string check=Convert.ToString(userContChange[i]);
                    if (temp.Contains(check))
                    {
                        charMatch = charMatch + 1;
                    }
                }
                int half = charCount / 2;
                if (charMatch >= half)
                {
                    checkArray[controlLoop] = contPeople[controlLoop].name;
                }
            }
///////////////////////////////////////////////////////////////////////////////////////////////////////////
                Console.WriteLine("Did you mean: ");
                for (int a = 0; a < checkArray.Length; a++)
                {
                    Console.WriteLine(checkArray[a]);
                }
///////////////////////////////////////////////////////////////////////////////////////////////////
4

3 に答える 3

10

文字列は多くの文字で構成されています。同様に、キャラクターはプリミティブであり、他のアイテムを「含んでいません」。文字列は基本的に文字の配列です。

文字列と文字を比較する場合:

char a = 'A';
String alan = "Alan";
Debug.Assert(alan[0] == a);

または、1桁の文字列がある場合..だと思います

char a = 'A';
String alan = "A";
Debug.Assert(alan == a.ToString());

これらの主張はすべて真です

しかし、私があなたの質問にコメントしたかった主な理由は、「もしかして?」を提案するための別のアプローチを提案することです. ある文字列を別の文字列に変換するために必要な「1 文字の編集回数」を計算するレーベンシュタイン距離と呼ばれるアルゴリズムがあります。2 つの文字列がどれだけ近いかの尺度として使用できます。このアルゴリズムがどのように機能するかを調べてみるとよいでしょう。

私が見つけたアプレットを次に示します

また、ウィキペディアのリンクレーベンシュタイン距離

于 2012-10-16T01:32:45.470 に答える
0

.Contains()char 値型は 1 つしかないため、char型は持つことができません。

あなたの場合(私が理解している場合)、.Equals()または==演算子を使用する必要があるかもしれません。

注: String を正しく比較するには、 を使用します。この場合、は参照型であるため.Equals()==演算子は適切に機能しません。String

この助けを願っています!

于 2012-10-16T01:33:02.880 に答える