2013-08-29 80 views
2

我想創建一個解析文本文件並返回冒號後爲url的字符串的方法。該文本文件看起來如下(它是一個機器人):使用java掃描器解析文本文件

關鍵字:網址
關鍵字,關鍵字:網址

所以每行包括一個關鍵字和一個網址,或多個關鍵字和一個網址。

任何人都可以給我一點方向,如何做到這一點?謝謝。

我相信我需要使用掃描儀,但找不到任何人想要做類似於我的任何事情。

謝謝。

編輯:我嘗試使用下面的建議。不起作用。任何幫助,將不勝感激。

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 
+2

你看掃描儀的文檔嗎? – hexafraction

+0

使用'BufferedReader'來獲取文件的行,然後你可以使用'Scanner'或'split'或者最簡單的正則表達式來標記行。 –

回答

0

使用BufferedReader進行文本解析,可以使用常規表達式。

0

您應該使用分割方法:

String strCollection[] = yourScannedStr.Split(":", 2); 
String extractedUrl = strCollection[1]; 
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