使用java扫描程序解析文本文件

时间:2013-08-29 07:55:45

标签: java java.util.scanner bots

我正在尝试创建一个解析文本文件的方法,并返回冒号后的url字符串。文本文件如下所示(适用于机器人):

  

关键词:URL
  关键字,关键字:URL

所以每一行都包含一个关键字和一个网址,或多个关键字和一个网址。

有谁可以给​​我一些指导如何做到这一点?谢谢。

我相信我需要使用扫描仪但却无法找到任何想要做与我类似的事情的人。

谢谢。

编辑:我尝试使用以下建议。不太有效。任何帮助将不胜感激。

    public static void main(String[] args) throws IOException {
    String sCurrentLine = "";
    String key = "hello";

    BufferedReader reader = new BufferedReader(
            new FileReader(("sites.txt")));
    Scanner s = new Scanner(sCurrentLine);
    while ((sCurrentLine = reader.readLine()) != null) {
        System.out.println(sCurrentLine);
        if(sCurrentLine.contains(key)){
            System.out.println(s.findInLine("http"));
        }
    }
}

输出:

    hello,there:http://www.facebook.com
null
whats,up:http:/google.com

sites.txt:

   hello,there:http://www.facebook.com
whats,up:http:/google.com

4 个答案:

答案 0 :(得分:2)

您应该逐行读取文件BufferedReader,我建议使用正则表达式解析文件。

模式

(?<=:)http://[^\\s]++

这样做可以解决这个问题:

  • 的http://
  • 后跟任意数量的非空格字符(多个)[^\\s]++
  • 并以冒号(?<=:)
  • 开头

以下是使用String代理文件的简单示例:

public static void main(String[] args) throws Exception {
    final String file = "hello,there:http://www.facebook.com\n"
            + "whats,up:http://google.com";
    final Pattern pattern = Pattern.compile("(?<=:)http://[^\\s]++");
    final Matcher m = pattern.matcher("");
    try (final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(file.getBytes("UTF-8"))))) {
        String line;
        while ((line = bufferedReader.readLine()) != null) {
            m.reset(line);
            while (m.find()) {
                System.out.println(m.group());
            }
        }
    }
}

输出:

http://www.facebook.com
http://google.com

答案 1 :(得分:0)

使用BufferedReader,对于文本解析,您可以使用正则表达式。

答案 2 :(得分:0)

您应该使用拆分方法:

String strCollection[] = yourScannedStr.Split(":", 2);
String extractedUrl = strCollection[1];

答案 3 :(得分:-1)