次を含むtxtファイルがあるとします。
john
dani
zack
ユーザーは文字列を入力します。たとえば、「omar」という文字列を入力します。「txt」ファイルを検索して、「omar」という文字列を探します。
関数String.endsWith()またはString.startsWith()を試しましたが、もちろん「存在しない」と3回表示されます。
私はJavaわずか3週間前に始めたので、私は全くの初心者です...私と一緒に耐えてください。ありがとう。
このテキストファイルを読み、各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");
他の方法で移動できます。 「存在しない」と印刷する代わりに、一致が見つかった場合は「存在する」と印刷するファイルを走査して中断します。ファイル全体を走査し、一致するものが見つからなかった場合のみ、先に進み、「存在しない」と表示します。
また、String.contains()
またはstr.startsWith()
の代わりにstr.endsWith()
を使用します。含むチェックは、開始または終了だけでなく、文字列全体で一致を検索します。
それが理にかなっていることを願っています。
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番目の引数として文字セットを渡すことができます。
テキストファイルの内容を読む: 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");