[英]Split complex string within a muliple sub string with same special character
我正在嘗試使用帶有多個子字符串的分號來解析字符串,這是示例
String temp = "SIM1_TM_4G3G2G_DE;ANY_RAT;TCNAME_Flight_Mode_Toggle;TIME_60;120;90;30"
所需的預期輸出將是僅顯示TIME_
之后的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);
}
}
嘗試這個:
String output = temp.substring(temp.indexOf("TIME_") + 5)
.replaceAll(";", "");
您可以刪除所有從開始直到並包括子;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演示
如果您提到的字符串始終采用這種格式,則此方法將起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.