使用a
Pattern是一种合理的方法。但是,为什么不使用单个字段来获取所有四个字段呢?
Pattern p = Pattern.compile("(\d+)d\s+(\d+)h\s+(\d+)m\s+(\d+)s");然后使用索引组提取。
编辑:
基于您的想法,我最终编写了以下方法
private static Pattern p = Pattern .compile("(\d+)d\s+(\d+)h\s+(\d+)m\s+(\d+)s");public static long parseDuration(String duration) throws ParseException { Matcher m = p.matcher(duration); long milliseconds = 0; if (m.find() && m.groupCount() == 4) { int days = Integer.parseInt(m.group(1)); milliseconds += TimeUnit.MILLISECONDS.convert(days, TimeUnit.DAYS); int hours = Integer.parseInt(m.group(2)); milliseconds += TimeUnit.MILLISEConDS .convert(hours, TimeUnit.HOURS); int minutes = Integer.parseInt(m.group(3)); milliseconds += TimeUnit.MILLISECONDS.convert(minutes, TimeUnit.MINUTES); int seconds = Integer.parseInt(m.group(4)); milliseconds += TimeUnit.MILLISECONDS.convert(seconds, TimeUnit.SECONDS); } else { throw new ParseException("Cannot parse duration " + duration, 0); } return milliseconds;}


