2

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

关键字:url
关键字,关键字: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

4 回答 4

2

你应该像你正在做的那样逐行读取文件BufferedReader,我建议使用正则表达式解析文件。

图案

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

会成功的,这个模式说:

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

这是一个使用 aString代理文件的简单示例:

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
于 2013-08-29T11:57:38.597 回答
0

您应该使用拆分方法:

String strCollection[] = yourScannedStr.Split(":", 2);
String extractedUrl = strCollection[1];
于 2013-08-29T08:28:31.837 回答
0

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

于 2013-08-29T08:01:22.660 回答
-1

使用 Java 中的 Scanner 类读取 .txt 文件

http://www.tutorialspoint.com/java/java_string_substring.htm

那应该对你有帮助。

于 2013-08-29T08:00:13.633 回答