2015-11-24 75 views
0

我有一個文本文件,其中包含數據在一行,我想從文本文件中提取單詞。Java如何從文本文件中提取單詞?

我想提取的話是:「ID」和「令牌」

使用Java我可以讀取該文件:

import java.io.File; 
import java.io.IOException; 

import org.apache.commons.io.FileUtils; 

public class ReadStringFromFile 
{ 
    public static void main(String[] args) throws IOException 
    { 
     File file = new File("test.txt"); 
     String string = FileUtils.readFileToString(file); 
     System.out.println("Read in: " + string); 
    } 
} 

由於文本文件是在同一行,我不知道如何從字符串中提取一個值。

+2

它只是一個字符串。你可以使用字符串操作來分割文本到任何你想要的東西。 –

+0

提供文本文件內容的樣本 – michaldo

+0

您應該將該行作爲一個字符串解析一次。如果一個字符串有id和token,你將如何提取? (也是這行的格式是什麼?) – tanjir

回答

0

它看起來像你試圖解析一些JSON代碼。你可以使用json解析器(檢出:http://www.json.org/java/),或者如果你的需求很簡單,可以使用正則表達式來提取你想要的位。可能是這樣的:

File file = new File("test.txt"); 
    String string = FileUtils.readFileToString(file); 
    Pattern re = Pattern.compile("(?:,|\\{)?\"([^:]*)\":(\"[^\"]*\"|\\{[^}]*\\}|[^},]*}?)", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL); 
    Matcher m = re.matcher(string); 

    // Create a map of all values 
    Map<String, String> map = new HashMap<String, String>(); 
    String id = "NOT_FOUND"; 
    String token = "NOT_FOUND"; 
    while (m.find()) { 
     map.put(m.group(1), m.group(2).replace("\"", "")); 
     if (m.group(1).trim().equals("id")) { 
      id = m.group(2).replace("\"", ""); 
     } 
     if (m.group(1).equals("token")) { 
      token = m.group(2).replace("\"", ""); 
     } 
    } 

    System.out.println("id = " + id + " : token = " + token); 

    // or 
    System.out.println(map); 
相關問題