尝试使用 string.split 从文本文件中读取
Trying to read from text file using string.split
我正在尝试通读一个文本文件,以便我可以按名称找到一本书,然后输出它的属性,我得到了奇怪的结果。有帮助吗?
这是代码:
System.out.print( "Enter name of book: " );
input2 = scanner.nextLine();
this.setName(input2);
String bookName = getInfo.readLine();
int i = 0, num = 0;
while(bookName != null)
{
String[] bookNames = bookName.split("|");
i++;
for(int j = (i*4-4); j<(i*4); j++)
{
if (bookNames[j] == this.name){
num = 1;
}
}
if(num == 1){
System.out.println(bookName);
num = 0;
}
bookName = getInfo.readLine();
}
这是文件:
糖果芒|涂鸦|4586|45.0|
摇篮|迈克尔|1111|1.0|
这是输出:
按 1 添加一本书,按 2 查找一本书。
2
您想如何搜索这本书?
1
输入书名:糖果芒
c
一个
n
d
l
e
|
退出?
c
您似乎在尝试读取以竖线 (|) 为分隔符的 CSV 文件。为什么不使用像这样的 CSV 库:
http://opencsv.sourceforge.net/
然后您可以使用以下方式设置分隔符:
CSVReader reader = new CSVReader(new FileReader("yourfile.csv"), '|');
然后您可以逐行阅读文件,搜索您想要的书:
CSVReader reader = new CSVReader(new FileReader("yourfile.csv"), '|');
String [] nextLine;
while ((nextLine = reader.readNext()) != null)
{
// nextLine[] is an array of values from the line
if(nextLine[0] == desiredBookName)
{
// Output desired attributes
}
}
|
是正则表达式中的一个特殊字符。所以你需要逃避它。
String[] bookNames = bookName.split("\|"); // Not the 2 backslashes.
|
在正则表达式中用作交流发电机(OR)。所以用 "|"
拆分与用 ""
拆分相同,这意味着拆分每个字符。这就是你有多个字符输出的原因。将特殊符号转义为 "\|"
观察:
不要像 bookNames[j] == this.name
那样使用 ==
比较两个对象。而是使用 bookNames[j].equals(this.name);
我正在尝试通读一个文本文件,以便我可以按名称找到一本书,然后输出它的属性,我得到了奇怪的结果。有帮助吗?
这是代码:
System.out.print( "Enter name of book: " );
input2 = scanner.nextLine();
this.setName(input2);
String bookName = getInfo.readLine();
int i = 0, num = 0;
while(bookName != null)
{
String[] bookNames = bookName.split("|");
i++;
for(int j = (i*4-4); j<(i*4); j++)
{
if (bookNames[j] == this.name){
num = 1;
}
}
if(num == 1){
System.out.println(bookName);
num = 0;
}
bookName = getInfo.readLine();
}
这是文件:
糖果芒|涂鸦|4586|45.0|
摇篮|迈克尔|1111|1.0|
这是输出:
按 1 添加一本书,按 2 查找一本书。
2
您想如何搜索这本书?
1
输入书名:糖果芒
c
一个
n
d
l
e
|
退出?
c
您似乎在尝试读取以竖线 (|) 为分隔符的 CSV 文件。为什么不使用像这样的 CSV 库: http://opencsv.sourceforge.net/
然后您可以使用以下方式设置分隔符:
CSVReader reader = new CSVReader(new FileReader("yourfile.csv"), '|');
然后您可以逐行阅读文件,搜索您想要的书:
CSVReader reader = new CSVReader(new FileReader("yourfile.csv"), '|');
String [] nextLine;
while ((nextLine = reader.readNext()) != null)
{
// nextLine[] is an array of values from the line
if(nextLine[0] == desiredBookName)
{
// Output desired attributes
}
}
|
是正则表达式中的一个特殊字符。所以你需要逃避它。
String[] bookNames = bookName.split("\|"); // Not the 2 backslashes.
|
在正则表达式中用作交流发电机(OR)。所以用 "|"
拆分与用 ""
拆分相同,这意味着拆分每个字符。这就是你有多个字符输出的原因。将特殊符号转义为 "\|"
观察:
不要像 bookNames[j] == this.name
那样使用 ==
比较两个对象。而是使用 bookNames[j].equals(this.name);