0

テキストの文字列と、文字列で検索する必要がある特定の単語があります。文字列内で次に出現する単語を見つけたら、その単語の直後にある文字をどうにかして見つける必要があります。スキャナーを使用しようとしましたが、 nextChar() メソッドが含まれていません。そのようなものが、私がやろうとしていることの目的に役立ちます。他に何を試すことができますか?ここに私が持っているコードがありますが、それは私がやりたいことをしません。

public void storeChar(String str)  //used to get the char after the seed and store it in the arraylist of chars
{
    Scanner sc = new Scanner(str);
    seed = wrdSd.getSeed();
    while(sc.hasNext())  //while there are words left to read
    {
        String next = sc.next();

        if(next.equals(seed))  //if the next word of the scanner = the seed
        {
            ch = sc.next().charAt(0);  //gets char at index 0 of the next word
            singleChar.add(ch); //adds the char to the char arraylist
        }   
    }
    sc.close();

}

前もって感謝します!

4

3 に答える 3

1

String#indexOfメソッドを使用して、単語が文字列内にあるかどうかを判断します。そうである場合は、メソッドを使用して、返されたインデックスを使用し、単語の長さを追加して、その結果を文字列のインデックスとして使用しますcharAt。弦の端からはみ出さないように注意してください。

于 2013-03-27T22:18:45.470 に答える
1

クラスが提供するIndexOfメソッドを使用してみてください。String

int idx = str.IndexOf(seed);
return str.charAt(idx + seed.Length);

文字列が最後に見つかる可能性があり、インデックスが範囲外を指すため、これは明らかにチェックを行いません。さらに、文字列が一致しない場合は-1、インデックスに対して が返されます。

于 2013-03-27T22:22:01.710 に答える
-1

テキストが「Hello World」で、「Hell」という単語に続くものを見つけたい場合は、「Hell(.)」などの正規表現を使用できます。

次に、最初のキャプチャ グループは "o" になり、それが目的です。

RE についてわからない場合は、http: //docs.oracle.com/javase/tutorial/essential/regex/をお読みください。

そして、これはキャプチャグループ用です: http://docs.oracle.com/javase/tutorial/essential/regex/groups.html

于 2013-03-27T22:20:59.413 に答える