2015-11-24 46 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); 
相关问题