web-dev-qa-db-ja.com

テキストファイルで文字列(または行)を見つけるJava

次を含むtxtファイルがあるとします。

john
dani
zack

ユーザーは文字列を入力します。たとえば、「omar」という文字列を入力します。「txt」ファイルを検索して、「omar」という文字列を探します。

関数String.endsWith()またはString.startsWith()を試しましたが、もちろん「存在しない」と3回表示されます。

私はJavaわずか3週間前に始めたので、私は全くの初心者です...私と一緒に耐えてください。ありがとう。

9
user3040333

このテキストファイルを読み、各WordをListに入れるだけで、そのListにWordが含まれているかどうかを確認できます。

Scanner scanner=new Scanner("FileNameWithPath");を使用してファイルを読み取り、Listに単語を追加するために以下を試すことができます。

 List<String> list=new ArrayList<>();
 while(scanner.hasNextLine()){
     list.add(scanner.nextLine()); 

 }

次に、Wordが存在するかどうかを確認します

if(list.contains("yourWord")){

  // found.
}else{
 // not found
}

ところで、あなたもファイルで直接検索することができます。

while(scanner.hasNextLine()){
     if("yourWord".equals(scanner.nextLine().trim())){
        // found
        break;
      }else{
       // not found

      }

 }

String.contains(your search String)またはString.endsWith()の代わりにString.startsWith()を使用します

例えば

 str.contains("omar"); 
1
Prabhakaran

他の方法で移動できます。 「存在しない」と印刷する代わりに、一致が見つかった場合は「存在する」と印刷するファイルを走査して中断します。ファイル全体を走査し、一致するものが見つからなかった場合のみ、先に進み、「存在しない」と表示します。

また、String.contains()またはstr.startsWith()の代わりにstr.endsWith()を使用します。含むチェックは、開始または終了だけでなく、文字列全体で一致を検索します。

それが理にかなっていることを願っています。

1
Ankur Shanbhag

Files.lines でこれを行うことができます:

try(Stream<String> lines = Files.lines(Paths.get("...")) ) {
    if(lines.anyMatch("omar"::equals)) {
  //or lines.anyMatch(l -> l.contains("omar"))
        System.out.println("found");
    } else {
        System.out.println("not found");
    }
}

UTF-8文字セットを使用してファイルを読み取ることに注意してください。そうでない場合は、Files.linesの2番目の引数として文字セットを渡すことができます。

0
Alex

テキストファイルの内容を読む: http://www.javapractices.com/topic/TopicAction.do?Id=42

その後、textData.contains(user_input);メソッドを使用します。textDataはファイルから読み取られたデータで、user_inputは、ユーザーが検索する文字列です

[〜#〜] update [〜#〜]

public static StringBuilder readFile(String path) 
 {       
        // Assumes that a file article.rss is available on the SD card
        File file = new File(path);
        StringBuilder builder = new StringBuilder();
        if (!file.exists()) {
            throw new RuntimeException("File not found");
        }
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new FileReader(file));
            String line;
            while ((line = reader.readLine()) != null) {
                builder.append(line);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

       return builder;
    }

このメソッドは、パラメーターとして指定されたテキストファイルから読み込んだデータから作成されたStringBuilderを返します。

ユーザー入力文字列が次のようなファイルにあるかどうかを確認できます。

int index = readFile(filePath).indexOf(user_input);
        if ( index > -1 )
            System.out.println("exists");
0
Hitman