扫描程序和子字符串

时间:2016-04-12 14:00:23

标签: java substring

我试图创建一个简单的程序来读取文本文件并从中获取特定数据。在下面的代码中,我尝试获得一个我引用的位置。所以,让我们说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));
}

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("\"", ""));
    }

我希望它有所帮助。