2013-07-25 17 views
-1

我写一个代码,其中我要分割以下字符串:分割字符串中的Java通过keword

String str = "{route=Head west on, some address, distance=0.2 km, duration=1 min}"; 

我要为路线,距离和时间价值分开。

+1

到目前为止你有什么? – ruakh

+1

这是相当简单的,如果他们在这一行没有逗号(,)'向西走,有些地址' – sanbhat

+0

是的,但我只以这种格式获得结果。 – Himanshu

回答

1

尝试一些这样的事

String str = "{route=Head west on, some address, distance=0.2 km, duration=1 min}"; 
    String newStr=str.replaceAll("\\}",""); 
    String[] arr=newStr.split("route="); 
    String[] arr1=arr[1].split("distance="); 
    String route=arr1[0]; 
    String[] arr2=arr1[1].split("duration="); 
    String distance=arr2[0]; 
    String duration=arr2[1]; 

    System.out.println("route= "+route); 
    System.out.println("distance= "+distance); 
    System.out.println("duration= "+duration); 
+0

非常感谢它的工作。 – Himanshu

1

您可以使用正则表达式分裂字符串:

String str = "{route=Head west on, some address, distance=0.2 km, duration=1 min}"; 
String regEx = "(\\{route=|distance=|duration=|\\})"; 
// String regEx = "(route=|distance=|duration=)"; 
String[] splited = str.split(regEx); 
for(String s: splited) { 
    System.out.println(s); 
} 

您可以添加任何其他关键字(只需将其添加到正则表达式),不改变代码!

+0

它的工作非常感谢.. – Himanshu

0

试试使用StringTokenizer到如下分割字符串:

final String SPLIT_STR = ","; 
    String str = "{route=Head west on, some address, distance=0.2 km, duration=1 min}"; 
    final StringTokenizer stToken = new StringTokenizer(
    str, SPLIT_STR); 
    final String[] splitStr = new String[stToken.countTokens()]; 
    int index = 0; 
    while(stToken.hasMoreElements()) { 
    splitStr[index++] = stToken.nextToken(); 
    } 
    for(index=0; index < splitStr.length; index++) { 
    System.out.println("Tokenizer : " + splitStr[index]); 
    } 

}

希望这会为你工作。