2015-05-07 73 views
-4

這裏複雜的字符串是這個字符串 (submit: (pdu: 56 4 0 150) (addr: 5 0 us) (addr: 1 1 88019448888) (sm: msg: HiTesTgggg) (opt:)) 我想分析它像波紋管格式解析Java中

String addrFirst = "us" 
String addrSecond = "88019448888" 
String message = "HiTesTgggg" 
+0

我已經嘗試使用味精= inputstring.split(「」「),但它不給我想要的格式,我是java的初學者。 –

回答

0

你是在正確的道路。 split接受一個正則表達式,正則表達式可以像你可以做的那樣複雜。我建議你閱讀關於這個主題的一些教程。

你可以找到一個簡單且有效的一個here

3

嘗試使用正則表達式,像這樣:

public static void main(String[] args) { 
    String text = "(submit: (pdu: 56 4 0 150) (addr: 5 0 us) (addr: 1 1 88019448888) (sm: msg: HiTesTgggg) (opt:))"; 
    Pattern p = Pattern.compile("\\(submit: \\(pdu: [^)]*\\) \\(addr: [^ ]* [^ ]* ([^)]*)\\) \\(addr: [^ ]* [^ ]* ([^)]*)\\) \\(sm: msg: ([^)]*)\\) \\(opt: \\) \\)"); 
    Matcher m = p.matcher(text); 
    m.find(); 
    System.out.println(m.group(1)); 
    System.out.println(m.group(2)); 
    System.out.println(m.group(3)); 
} 


\\(-> escaped left-bracket 
\\) -> escaped right-bracket 
[^)]* -> an undefined amount of any character but ")" 
[^ ]* -> an undefined amount of any characters but " " (a blank) 
([^)]*) -> an undefined amount of any character but ")" -> the() around means it is a matching group