尝试从文本文件中检索信息时出现问题

时间:2013-07-24 16:37:33

标签: java string text java.util.scanner bufferedreader

我在申请中遇到了一个问题。我有一个文本文件,其中包含一段代码,我需要检索它以应用到一个字符串变量中。问题是哪种方法最好?我在下面运行了这些示例,但它们在逻辑上是不正确/不完整的。看看:

  1. 通读线阅读:

    BufferedReader bfr = new BufferedReader(new FileReader(Node));
    
    String line = null;
    try {
        while( (line = bfr.readLine()) != null ){
            line.contentEquals("d.href");
            System.out.println(line);
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    
  2. 通读字符:

    BufferedReader bfr = new BufferedReader(new FileReader(Node));
    int i = 0;
    try {
        while ((i = bfr.read()) != -1) {
             char ch = (char) i;
             System.out.println(Character.toString(ch));
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    };
    
  3. 通过扫描仪阅读:

    BufferedReader bfr = new BufferedReader(new FileReader(Node));
    BufferedReader bfr = new BufferedReader(new FileReader(Node));
    int wordCount = 0, totalcount = 0;
    Scanner s = new Scanner(googleNode);
    while (s.hasNext()) {
       totalcount++;
       if (s.next().contains("(?=d.href).*?(}=?)")) wordCount++;
    }
    System.out.println(wordCount+" "+totalcount);
    
  4. 使用(1.)我很难找到包含代码片段开头的d.href 使用(2.)我无法想到或找到一种方法将d.href存储为字符串并检索其余信息 使用(3.)我可以正确找到d.href,但我无法检索txt的片段。

    有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

作为我的问题的答案,我使用扫描仪在文本文件中逐字阅读。 .contains("window.maybeRedirectForGBV")返回一个布尔值,hasNext()返回一个字符串。然后,在我想要之前,我在文本文件的一个单词上停止查询我的代码拉伸,再向前移动一次,将下一个单词的值存储在一个字符串变量上。从这一点开始,您只需要按照自己的方式处理字符串。希望这有帮助。

String stringSplit = null;
           Scanner s = new Scanner(Node);
           while (s.hasNext()) {

            if (s.next().contains("window.maybeRedirectForGBV")){
                stringSplit = s.next();
                break;
            }
           }

答案 1 :(得分:0)

你可以使用这样的正则表达式:

Pattern pattern = Pattern.compile("^\\s*d\\.href([^=]*)=(.*)$");
// Groups:                                      1-----1 2--2
// Possibly spaces, "d.href", any characters not '=', the '=', any chars.

....
    Matcher m = pattern.matcher(line);
    if (m.matches()) {
        String dHrefSuffix = m.group(1);
        String value = m.group(2);
        System.out.println(value);
        break;
    }

BufferedReader将会这样做。