如何从字符串中提取带单词的行(java_android)
我有以下代码:如何从字符串中提取带单词的行(java_android),java,android,string,lookup,processor,Java,Android,String,Lookup,Processor,我有以下代码: private String ReadCPUinfo() { ProcessBuilder cmd; String result=""; try{ String[] args = {"/system/bin/cat", "/proc/cpuinfo"}; cmd = new ProcessBuilder(args); Process process = cmd.start(); InputStream in = process.g
private String ReadCPUinfo()
{
ProcessBuilder cmd;
String result="";
try{
String[] args = {"/system/bin/cat", "/proc/cpuinfo"};
cmd = new ProcessBuilder(args);
Process process = cmd.start();
InputStream in = process.getInputStream();
byte[] re = new byte[1024];
while(in.read(re) != -1){
System.out.println(new String(re));
result = result + new String(re);
}
in.close();
} catch(IOException ex){
ex.printStackTrace();
}
return result;
}
和来自/proc/cpuinfo的字符串作为结果。我需要将处理器信息(processor:WordIWantToExtract)提取为字符串,以将其放在TextView中。
我是用Python脚本完成的(将cpuinfo打印到txt文件中,然后用单词“Processor”查找行号,返回行号,然后通过编辑打印这一行)。如何将其移植到Java?只是一个文本文件。只需使用BufferedReader
读取内容,而不是使用ProcessBuilder
。检查前缀“Processor”以提取准确的行
BufferedReader reader =
Files.newBufferedReader(Paths.get("/proc/cpuinfo"), StandardCharsets.UTF_8);
while ((line = reader.readLine()) != null) {
Matcher m = Pattern.compile("Processor: (.*)").matcher(line);
if (m.find()) {
System.out.println("Processor is " + m.group(1));
...
}
}
我会使用JSONObject。你可以用“键”处理器和你想要的单词来创建对象。比如说,
Map<String, String> processors = new HashMap<String, String>();
loggingMap.put("Processor", "Word");
JSONObject jsonObject = new JSONObject();
jsonObject.element(processors);
然后您可以从文件中读取该行并使用
jsonObject.getString("Processor");
我使用了一个HashMap,以防您有键和值。我不确定是否理解您的问题,但我认为您可以在while循环之后添加以下内容:
Matcher matcher = Pattern.compile("Processor: (.*)").matcher(result);
if (matcher.find()) {
String wordYouWantToExtract = matcher.group(1);
}
Matcher matcher = Pattern.compile("Processor: (.*)").matcher(result);
if (matcher.find()) {
String wordYouWantToExtract = matcher.group(1);
}