在具有相同特殊字符的多个子字符串中拆分复杂字符串

时间:2016-11-26 13:34:16

标签: java arrays string

我试图用带有多个子串的分号来解析字符串,这里是示例

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);                 
    }

}

2 个答案:

答案 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

如果你提到的字符串总是采用这种格式,这将有效。