0

Javaでワイルドカードを実装しようとしています。

ここに私が持っているコードがあります

public class Assign {

    public boolean compare(String s1, String s2)
    {
        char [] s3 = s1.toCharArray();
        char [] s4 = s2.toCharArray();
        int i,j;

        int k = 0;
        for(i=0;i<s3.length;i++)
        {
            for(j=0;j<s4.length;j++)
            {
                if(s3[i] == s4[j])
                {

                    if(s4[j] == '*')
                    {
                        i++;

                        if(s3[i] == s4[s4.length-1])
                        {
                            return true;
                        }
                    }
                }
            }
        }
        return false;
    }
    public static void main(String args[])
    {
        Assign a = new Assign();
        boolean r = a.compare("a hello b", "a * b");
        System.out.println(r);
    }
}

関数に渡される 2 つのパラメーターがあります。1 つは文字列で、もう 1 つは正規表現です。

例は次のとおりです。

1) 渡された文字列が「a hello b」で、正規表現が「a * b」の場合、関数は TRUE を返す必要があります。これは、* の代わりに任意の数の文字が存在できるためです。

2) 渡された文字列が "a X b" で、正規表現が "a ? b" の場合、戻り値は TRUE になるはずです。正規表現では、a と b の間には 1 文字しかないはずです。

このように、すべてのケースで機能します。私が考えたロジックは問題ないと思いますが、コーディング部分に問題があります。

パターンとマッチャーをインポートしたくありません。それらがなければ、これを完了する必要があります。

親切に、誰でもこれについて私を助けてください。

ありがとうございます

4

1 に答える 1

0

「?」が表示された場合 次に文字をスキップします。「*」が表示された場合は、一致するものが見つかるまで、残りの入力に対して検索関数を再帰的に呼び出します。

于 2013-03-27T13:41:12.027 に答える