Java 读取文件并拆分行
以下是我书店最后一部分的说明: 通过Bookstore类的read()方法,可以读取关于出版商和书籍的信息,并将其存储在各自的集合中。此方法接收文件路径作为参数。该文件是一个文本,按行组织,并带有字段,以“;”分隔。 如果第一个字段分别包含字母“P”或“B”,则每行都包含关于出版商或书籍的信息。 发布者行在第一行之后包含字段名称、平均送达和电子邮件。 图书行在第一行之后包含标题、作者、年份、价格、出版商名称和数量字段。Java 读取文件并拆分行,java,string,file,file-io,bufferedreader,Java,String,File,File Io,Bufferedreader,以下是我书店最后一部分的说明: 通过Bookstore类的read()方法,可以读取关于出版商和书籍的信息,并将其存储在各自的集合中。此方法接收文件路径作为参数。该文件是一个文本,按行组织,并带有字段,以“;”分隔。 如果第一个字段分别包含字母“P”或“B”,则每行都包含关于出版商或书籍的信息。 发布者行在第一行之后包含字段名称、平均送达和电子邮件。 图书行在第一行之后包含标题、作者、年份、价格、出版商名称和数量字段。 该方法必须忽略不符合所述模式的行 你听说过分裂弦吗?请使用以下语法 Stri
该方法必须忽略不符合所述模式的行 你听说过分裂弦吗?请使用以下语法
String[] splitedString = s.split(";");
然后循环中的代码可以这样更改
String[] splitedString = s.split(";");
if(splitedString[0].length==1 && !(splitedString[0].equalsIgnoreCase("p") || splitedString[0].equalsIgnoreCase("b"))) {
System.out.println("Line not conform");
} else if(splitedString[0].equalsIgnoreCase(p) && splitedString.length==5) {
name = splitedString[1];
average = splitedString[2];
delivery = splitedString[3];
email = splitedString[4];
}
等等
编辑:
对于所有解析int和parse double的代码,请更改它们。保持简单,删除包括if检查在内的所有代码,它们应该尽可能简单
try {
delivery=Integer.parseInt(splitted[2].trim());
} catch (NumberFormatException) {
isOk=false;
}
也许您可以使用正则表达式获得更干净(更高效)的代码。目标已实现!但是,出于好奇,我试图省略
trim()
调用(因为我想理解它),结果也是一样的。你为什么认为这是必要的?为了以防万一(在现实编程中,而不是在练习期间),我不知道没有空格?Trim基本上会删除字符串开头或结尾的空格。。。是的,这只是预防措施。。。。
String[] splitedString = s.split(";");
if(splitedString[0].length==1 && !(splitedString[0].equalsIgnoreCase("p") || splitedString[0].equalsIgnoreCase("b"))) {
System.out.println("Line not conform");
} else if(splitedString[0].equalsIgnoreCase(p) && splitedString.length==5) {
name = splitedString[1];
average = splitedString[2];
delivery = splitedString[3];
email = splitedString[4];
}
try {
delivery=Integer.parseInt(splitted[2].trim());
} catch (NumberFormatException) {
isOk=false;
}