この投稿をstackoverflowで検証した後、メソッドを使用しindexOf()
てファイルから値を解析しています。以下は私のファイルの形式です-
10/05/2005 10:02;AM;a@xyz.com;student=student1 std=X marks=87 rollnumber=102
10/05/2005 10:05;AM;b@xyz.com;student=student2 std=IX rollnumber=26
10/05/2005 10:15;PM;c@xyz.com;student=student3 std=VII marks=87 attandance=5 rollnumber=12
10/05/2005 10:32;AM;d@xyz.com;student=student4 std=V marks=87 rollnumber=69
注: 電子メールのdomain name
iexyz.com
は、どこでも変更される予定はありません。
以下は、私が現在使用しているコードスニペットです-
FileInputStream fis = new FileInputStream(file);
BufferedReader br = new BufferedReader(new InputStreamReader(
fis));
String line = "";
while ((line = br.readLine()) != null) {
int index = -1;
if ((index = line.indexOf("xyz.com")) != -1) {
int inStudent = line.indexOf("student=", index);
int spaceExistsinStudent = -1;
int studentIndex = -1;
if ((spaceExistsinStudent = line.indexOf("student=\"", inStudent)) != -1)
studentIndex = line.indexOf(" ", inStudent);
else
studentIndex = line.indexOf("\" ", spaceExistsinStudent);
int inSTD = line.indexOf("std=", studentIndex);
int spaceExistsinSTD = -1;
int stdIndex = -1;
if ((spaceExistsinSTD = line.indexOf("std=\"", inSTD)) != -1)
stdIndex = line.indexOf(" ", inSTD);
else
stdIndex = line.indexOf("\" ", spaceExistsinSTD);
String studentName = line.substring(inStudent + 9, studentIndex);
String stdName = line.substring(inSTD + 4, stdIndex);
コード全体を貼り付ける必要はありません。
さて、上記の実装を使用して、私は動作することができますが、パフォーマンスを考慮すると、これは有効なソリューションですか? 同じことを達成するためのより良い方法....
よろしくお願いします。