拆分字符串

时间:2015-03-16 06:27:37

标签: java

我有一个像

这样的字符串
<YYYY>-<MM>-<DD>_ABC_<ID>_<BKN>_<HH><MM><SS>

我想以这样的方式拆分字符串,结果应如下所示:

<YYYY>
-
<MM>
-
<DD>
_
<ABC>
_
<ID>
_
<BKN>
_
<HH>
<MM>
<SS>

我该怎么做?

4 个答案:

答案 0 :(得分:0)

试试这个

String s = "<YYYY>-<MM>-<DD>_ABC_<ID>_<BKN>_<HH><MM><SS>";
StringTokenizer st = new StringTokenizer(s, "_|\\-", true);
while (st.hasMoreTokens()) {
    System.out.println(st.nextToken());
}

答案 1 :(得分:0)

你可以通过这种方式实现它,可能看起来很脏,但会达到你的目的:

    String teststring="<YYYY>-<MM>-<DD>_ABC_<ID>_<BKN>_<HH><MM><SS>";
    Matcher m = Pattern.compile("<YYYY>(.*)<MM>(.*)<DD>(.*)ABC(.*)<ID>(.*)<BKN>(.*)<HH>(.*)<MM>(.*)<SS>(.*)").matcher(teststring);
    while(m.find()) {
        System.out.println("<YYYY>\n" + m.group(1));
        System.out.println("<MM>\n" + m.group(2));
        System.out.println("<DD>\n" + m.group(3));
        System.out.println("<ABC>\n" + m.group(4));
        System.out.println("<ID>\n" + m.group(5));
        System.out.println("<BKN>\n" + m.group(6));
        System.out.println("<HH>\n" + m.group(7));
        System.out.println("<MM>\n" + m.group(8));
        System.out.println("<SS>\n" + m.group(9));
    }

答案 2 :(得分:0)

public static void main(String[] args) {
    String str = "1987-07-31_ABC_<ID>_<BKN>_<HH><MM><SS>";
    List < String > result = new ArrayList < String > ();
    String token = "";
    for (Character c: str.toCharArray()) {
        if (c == '-' || c == '_') {
            result.add(token);
            token = "";
            result.add(c.toString());
        } else {
            token += c;
        }
    }
    if (token != "") {
        result.add(token);
    }
    System.out.println(result);
}

答案 3 :(得分:0)

    String s = "<YYYY>-<MM>-<DD>_ABC_<ID>_<BKN>_<HH><MM><SS>";

    String a = s.replaceAll("[^-|_]", "");
    String[] b = s.replaceAll("[-_<>]", " ").trim().split("\\s+");

    for(int i = 0; i < b.length; ++i) {
        System.out.println("<" + b[i] + ">");       
        if(i < a.length()) System.out.println(a.charAt(i));
    }

或只是

    String s = "<YYYY>-<MM>-<DD>_ABC_<ID>_<BKN>_<HH><MM><SS>";
    String[] c = s.replaceAll("-", "\n-\n").replaceAll("_", "\n_\n").replaceAll("><", ">\n<").split("\n");

    for(int i = 0; i < c.length; ++i) {
        System.out.println(c[i].indexOf("<") < 0 && c[i].length() > 1 ? "<" + c[i] + ">" : c[i]);   
    }

...

<YYYY>
-
<MM>
-
<DD>
_
<ABC>
_
<ID>
_
<BKN>
_
<HH>
<MM>
<SS>