這裏複雜的字符串是這個字符串 (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"
這裏複雜的字符串是這個字符串 (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"
你是在正確的道路。 split
接受一個正則表達式,正則表達式可以像你可以做的那樣複雜。我建議你閱讀關於這個主題的一些教程。
你可以找到一個簡單且有效的一個here
嘗試使用正則表達式,像這樣:
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
我已經嘗試使用味精= inputstring.split(「」「),但它不給我想要的格式,我是java的初學者。 –