问题:有一串字符是Heap....10022.....,java语言有什么方法可以更方便截取10022这个数字?
我做的方法如下,可以截取到,但是这个方法不太好用,如果当数值是4位数时,截取的数值前面就会多一个小数点,比如(.8921)”这种。所以请教一下大家,有什么方法截取这个数值更精准点
正则表达式取数字就可以了
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Created by yjl on 2021/2/4.
*/
public class Testaa {
public static void main(String[] args) {
String regContent = getRegContent("(\\d)+", "Heap....10022.....", 0);
System.out.println(regContent);
}
public static String getRegContent(String reg, String content, int index){
Pattern pattern = Pattern.compile(reg); // 讲编译的正则表达式对象赋给pattern
Matcher matcher = pattern.matcher(content);
String group="";
while (matcher.find()){
group= matcher.group(index);
//System.out.println(group);
}
return group;
}
}
既然你是用shell取信息,为啥不直接在shell中处理呢
adb shell 中应该是支持 grep 和 awk 的吧
另外,使用 adb shell 执行的话可能得考虑一下管道符 `|` 前后命令的执行关系了,没这么用过,自行测试看怎么能把整条命令传递进shell里吧
dumpsys meminfo $packageName | grep 'Dalvik Heap' | awk '{print $3}'
拿去直接跑
public static void main(String[] args) {
String s="asfewrghterjytj10022assdfdf";
if(s.indexOf("10022") != -1){
String s2=s.substring(s.indexOf("10022"),s.indexOf("10022")+5);
System.out.println(s2);
}
}
楼上命令可用,shell取信息dump内存信息中做消息提取。可以自行查看grep 以及awk的使用方法。
大致意思,grep是查询信息包含或者不包含使用方法请自行百度,awk '{print $3}'是指第三个字段输出。
没看懂
鬼知道你的字符串是啥,如果格式是固定的,正则去匹配就行了
正则表达式,或者,如果格式固定就用replace呗,把固定的部分和.都替换成空,剩下的就是数字了~