Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 拆分字符串_Java - Fatal编程技术网

Java 拆分字符串

Java 拆分字符串,java,Java,我有一根像 <YYYY>-<MM>-<DD>_ABC_<ID>_<BKN>_<HH><MM><SS> 我希望以如下方式拆分字符串: <YYYY> - <MM> - <DD> _ <ABC> _ <ID> _ <BKN> _ <HH> <MM> <SS> 我该怎么做呢?试试这个 String

我有一根像

<YYYY>-<MM>-<DD>_ABC_<ID>_<BKN>_<HH><MM><SS>
我希望以如下方式拆分字符串:

<YYYY>
-
<MM>
-
<DD>
_
<ABC>
_
<ID>
_
<BKN>
_
<HH>
<MM>
<SS>
我该怎么做呢?

试试这个

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());
}

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

    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));
    }
或者只是

    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]);   
    }


你想要uu和-以及分开的字符串吗?嗨,亲爱的,谢谢你的回复。是的,我希望将“u”和“-”作为单独的字符串:ABC将是?这不会像OPStill输出中预期的那样打印下划线和连字符,但是,输出的最后一个标记将是,并且必须在单独的行中新行。。。继续努力你假设在源字符串中,格式看起来像一个完整的日期和时间,有一些额外的内容,缺少一些其他属性,如:分隔小时、分钟和秒
    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>