1

で引っ張ったテキストファイルをスキャナーで読み取ろうとしていますJFileChooser。はwordCount正常に動作しているので、読み取りが行われていることがわかります。ただし、ユーザーが入力した単語のインスタンスを検索することはできません。

public static void main(String[] args) throws FileNotFoundException {
    String input = JOptionPane.showInputDialog("Enter a  word");
    JFileChooser fileChooser = new JFileChooser();
    fileChooser.showOpenDialog(null);
    File fileSelection = fileChooser.getSelectedFile();
    int wordCount = 0;
    int inputCount = 0;
    Scanner s = new Scanner (fileSelection);
    while (s.hasNext()) {
        String word = s.next();
        if (word.equals(input)) {
            inputCount++;
    }
    wordCount++;
}
4

4 に答える 4

0

あなたは探す必要があります

、 ; . ! ? 等

単語ごとに。このnext()メソッドは、 に到達するまで文字列全体を取得しますempty space

「こんにちは、お元気ですか?」と考えます。次の「こんにちは」、「どのように」、「ある」、「あなたは?」など。

メソッドindexOf(String)を使用して、これらの文字を見つけることができます。replaceAll(String regex, String replacement) を使用して文字を置き換えることもできます。各文字を個別に削除したり、 を使用したりすることもできますがRegex、これらは通常、理解するのがより複雑です。

//this will remove a certain character with a blank space
word = word.replaceAll(".","");
word = word.replaceAll(",","");
word = word.replaceAll("!","");
//etc.

この方法について詳しくは、次をご覧ください。

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#replaceAll%28java.lang.String,%20java.lang.String%29

正規表現の例を次に示します。

//NOTE:  This example will not work for you.  It's just a simple example for seeing a Regex.
//Removes whitespace between a word character and . or ,
String pattern = "(\\w)(\\s+)([\\.,])";
word = word.replaceAll(pattern, "$1$3"); 

ソース:

http://www.vogella.com/articles/JavaRegularExpressions/article.html

これはあなたを助けるかもしれない良い正規表現の例です:

Javaの特殊文字の正規表現

Java正規表現の特殊文字を解析して削除する

Javaの文字列から「単語以外の文字」をすべて削除し、アクセント付きの文字を残しますか?

于 2013-09-26T18:17:26.277 に答える
0

をご覧くださいmatches()

equalsnext()ファイルを単語ごとに返すのではなく、トークンごとに区切られた空白(コンマ、セミコロンなどではない)を返すため、役に立ちません(他の人が述べたように

ここでは、Java doc
String#matches(java.lang.String)

... と小さな例を示します。

input = ".*" + input + ".*";
...
boolean foundWord = word.matches(input)

.は正規表現のワイルドカードで、任意の記号を表します。.*0 個以上の未定義の記号を表します。入力が のどこかにある場合、一致が得られますword

于 2013-09-26T18:25:33.460 に答える
0

ユーザーが入力したテキストが異なる場合は、使用してみてくださいequalsIgnoreCase()

于 2013-09-26T18:02:30.217 に答える