public class event implements ActionListener { //_________________________________
public void actionPerformed(ActionEvent Action){
System.out.println("Clicked");
String searchObject = tagTextField.getText();
FileReader fr = new FileReader(searchObject + ".txt");
BufferedReader br = new BufferedReader(fr);
// if(line.startsWith("001")){
// }
这就是我现在所拥有的。我的目标是文本文件的第一个单词为001或002或0003。然后,单词后面是字母。我希望能够识别以001开头的行中的所有字母,它们全部合并到一个变量中,以显示在JTextField中。一个例子:
001 A
002 B
001 C
001 Z
005 A
002 C
我希望程序将返回“ A C Z”。可悲的是,我已经问了这个问题,并得到了一个很好的答案,但是我决定不做第一种方法,而是问他是否可以在其中实现一些HTML。现在,虽然我不再需要HTML,但无法检索他建议我使用的旧代码(这对现在来说是完美的)。
背景:SearchObject是文件的名称。
最后两行被// //删除,因为未定义行,我也不知道如何开始。任何帮助将不胜感激。
这不是我的完整代码,但我认为程序的其余部分无关紧要,因为其余部分不会处理文件读取或其他任何操作。
答案 0 :(得分:0)
您可以使用正则表达式
BufferedReader br = new BufferedReader(file);
String line;
String result;
while(br.readLine() != null) {
line = br.readLine();
if(line.matches("^001.*$")) {
result += line.subString(4, 5) + " ";
}
}
直到读取的行不等于null(结尾),然后将读取的行分配给字符串line。
^代表行首,001是您要匹配的纯文本,。*是包含零次或多次(*)的任何字符(。),$是行尾。
然后,如果为true,则添加该行的子字符串,该子字符串从第4个字符开始,以第5个字符结束并加一个空格。
答案 1 :(得分:0)
尝试从Java-8使用Files
来读取文件中的所有行,并过滤行startsWith
001
。然后拆分字符串从索引1获取值
try (Stream<String> stream = Files.lines(Paths.get(searchObject + ".txt"))) {
List<String> abc = stream.filter(str->str.startsWith("001"))
.map(s->s.split("001")[1]).collect(Collectors.toList());
System.out.println(abc); // A C Z
} catch (IOException e) {
e.printStackTrace();
}