在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);
无需粘贴整个代码。
好吧,使用上述实现,我可以工作,但是考虑到性能,这种有效的解决方案是否有效?任何更好的方法来实现同样的......
提前谢谢你。