我试图用带有多个子串的分号来解析字符串,这里是示例
String temp = "SIM1_TM_4G3G2G_DE;ANY_RAT;TCNAME_Flight_Mode_Toggle;TIME_60;120;90;30"
所需的预期输出将仅显示TIME_
:
60
120
90
30
我已尝试使用以下代码,但未执行以下操作
String[] args_val=temp.split(";");
log("STARTING THE LOOP");
for(int ix=0; ix<args_val.length;ix++)
{
log("args_val["+ix+"]-" +args_val[ix]);
//TIME is considered in seconds
if(args_val[ix].contains(TIME"))
{
log("args_val[ix] length -" +args_val[ix].length());
String sTime = args_val[ix].substring(args_val[ix].indexOf("TIME_") +5, args_val[ix].length());
log("print sTime-" +sTime);
}
}
答案 0 :(得分:0)
试试这个:
String output = temp.substring(temp.indexOf("TIME_") + 5)
.replaceAll(";", "");
答案 1 :(得分:0)
您可以使用.*;TIME_
正则表达式删除从开始到包含;TIME_
的所有子字符串(请注意.*
是一个贪婪的点匹配模式,并且将从开始时匹配字符串直到行上的最后一个;TIME_
,然后用;
拆分其余部分:
String temp = "SIM1_TM_4G3G2G_DE;ANY_RAT;TCNAME_Flight_Mode_Toggle;TIME_60;120;90;30";
String[] res = temp.replaceFirst(".*;TIME_", "").split(";");
System.out.println(res[0]);
System.out.println(res[1]);
System.out.println(res[2]);
System.out.println(res[3]);
请参阅Java demo
如果你提到的字符串总是采用这种格式,这将有效。