我有一个文本文件,其中包含一行数据,我想从文本文件中提取单词。
我想要提取的词是:" id"和#34;令牌"
使用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);
}
}
由于文本文件在一行中,我不知道如何从String中提取值。
答案 0 :(得分:0)
您需要split字符串。
在你的情况下,我假设这些单词是由空格分隔的,所以string.split("\\s+");
应该可以解决问题。
答案 1 :(得分: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);