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>