我需要读取txt
文件,并检查文本文件是否具有“名字”。如果包含,则应拆分行并在控制台中显示该行。
public String[] getFullname() {
try {
BufferedReader br = new BufferedReader(new FileReader("src\\main\\resources\\CV.docx"));
String line = br.readLine();
while (line != null) {
if (line.startsWith("Full Name")) {
String[] fname = line.split(":");
System.out.println(Arrays.toString(fname));
firstname = fname;
}
line = br.readLine();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return firstname;
}
答案 0 :(得分:1)
您正在比较名和全名。这就是2.4.4
条件失败的原因。
使用
if
代替
if (line.startsWith("First Name"))
如果要检查行中是否包含单词名字,请使用if (line.startsWith("Full Name"))
而不是contains
。 'startsWith'仅检查行的起始字符是否与字符串匹配。
startsWith
答案 1 :(得分:1)
这是由于docx文件。有apache poi API,用于读取使用MS Office套件产品编写的文件。我已经尝试过一次的Excel文件。操作方式对文本文件有效。
首先,您可以在控制台上检查文件的日志记录内容。如果有能力,那么您只能检查它是否以某种开头。
请参阅此处发布的答案以阅读docx文件:
https://stackoverflow.com/a/34543577/4940369
也请用“名字”更正“全名”。
使用的逻辑似乎也不正确:
split()方法返回由字符串/字符串定界符分隔的字符串数组。在此块中的任何地方都未声明firstName。您正在尝试将数组分配给String。您可以使用substring(line.indexOf(':'))。
它将始终返回在以“名字”开头的最后一行中找到的名称。没有休息或什么。每次以“ First Name”开头时,都会重新分配firstName变量。如果要返回每个名字,可以使用列表而不是数组。继续将其添加到列表中。
答案 2 :(得分:0)
...检查文本文件是否具有“ 名字” ...
在您的代码中,您搜索的是全名,而不是名字。
替换
if (line.startsWith("Full Name")) {
使用
if (line.startsWith("First Name")) {
更新:
如David在this comment中所述,如果您要阅读Word文档。您的尝试完全没有用。