我试图创建一个简单的程序来读取文本文件并从中获取特定数据。在下面的代码中,我尝试获得一个我引用的位置。所以,让我们说file.txt的内容是:
aaaaaaa"bbbbb"ccccc
ddd"ee"ffff
g"hhhhhh"iii"gggg"
所以我应该有一个包含所有引号位置的数组列表(al = [7,13,3,6,1,8,12,17])。 问题是我似乎无法从每行读取一个子字符串,我从文本中读取。我想得到引号内的文字。输出应该是这样的:
bbbbb
ee
hhhhhh
gggg
代码:
File temp = new File("file.txt");
Scanner file = new Scanner(temp);
ArrayList<Integer> al = new ArrayList<Integer>();
while (file.hasNext()) {
String k = file.next();
//System.out.println(k);
int position = 0;
while (position >= 0) {
position = k.indexOf('"', position + 1);
//System.out.println(position);
al.add(position);
}
System.out.println(k.substring(position,position+1));
}
答案 0 :(得分:0)
如果您按照上面的建议使用正则表达式,那么您可以这样做(假设引号在同一行中打开和关闭):
List<String> lines = Files.lines(Paths.get("files/input.txt")).collect(Collectors.toList());
Pattern p = Pattern.compile("\"(.*?)\"");
for(String line : lines){
Matcher m = p.matcher(line);
while(m.find())
System.out.println(m.group(1).replaceAll("\"", ""));
}
我希望它有所帮助。