※ ChatGPTを利用し、要約された質問です(原文:javaでファイル操作し検索するものを作ってます)
Javaでテキストファイルの検索を行う方法
2014/05/12 21:03
このQ&Aのポイント
Javaを使用してテキストファイル内の文字列を検索し、ヒットした結果を表示する方法について説明します。
プログラムは学籍番号や名前、出身地での検索に対応しており、検索方法を選択することができます。
その際、完全一致検索や部分一致検索を行うことができます。また、検索結果はテキストファイルの内容として表示されます。
目的はテキストファイル内の文字列に検索をかけヒットしたものを表示する というものです
import java.io.*;
class kensakuTest{
public static void main(String[] args)throws IOException{
System.out.println("検索方法を選択してください。\n0:学籍番号で検索\n1:名前で検索\n2:出身地で検索");
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
char res = str.charAt(0);
//0が選択された場合
if(res == '0'){
System.out.println("学籍番号を入力してください。");
BufferedReader bn =
new BufferedReader(new InputStreamReader(System.in));
String str0 = fn.readLine();
char num = str0.charAt(0);
try{
FileReader freader = new FileReader("addressdata.txt");
BufferedReader breader = new BufferedReader(freader);
String tmp = null;
while((tmp=breader.readLine())!=null){
//完全一致
if(){
System.out.println("検索結果:");
System.out.println(tmp);
}
}
breader.close();
}catch(IOException e){
System.out.println("e");
}
}
//1が選択された場合
if(res == '1'){
System.out.println("名前を入力してください。");
BufferedReader fn =
new BufferedReader(new InputStreamReader(System.in));
String str1 = fn.readLine();
char name = str1.charAt(0);
try{
FileReader freader = new FileReader("data.txt");
BufferedReader breader = new BufferedReader(freader);
String tmp = null;
//検索
//部分一致
while((tmp=breader.readLine())!=null){
if(tmp.indexOf(str1) > -1){
System.out.println("結果は:");
System.out.println(tmp);
}
}
breader.close();
}catch(IOException e){
System.out.println("e");
}
}
//2が入力された場合
if(res == '2'){
System.out.println("出身地を入力してください。");
BufferedReader bl =
new BufferedReader(new InputStreamReader(System.in));
String belong = bl.readLine();
try{
FileReader freader = new FileReader("addressdata.txt");
BufferedReader breader = new BufferedReader(freader);
String tmp = null;
while((tmp=breader.readLine())!=null){
//完全一致
if(){
System.out.println("検索結果:");
System.out.println(tmp);
}
}
breader.close();
}catch(IOException e){
System.out.println("e");
}
}
}
}
現状はここまでできましたが完全一致の検索のやり方がわかりません。
あと問題点があるのですが 読み取るファイルがこのような場合
2000,田中 太郎,福島県
2001,福島 太郎,東京都
名前で福島 と検索をかけたとします この場合答えが
2000,田中 太郎,福島県
2001,福島 太郎,東京都
と表示されてしまいます このカンマで区切られている学籍番号、名前、出身地をうまく分け
それぞれ判別する方法はないのでしょうか?
よろしくおねがいします。
質問の原文を閉じる
質問の原文を表示する