标记字符串



我得到了一个格式如下的字符串:yyyyMMdd_HHm_ss_unitCode_(status)。我需要将每个组件映射到一个专用类的属性。

我想用这样的正则表达式来定义我的令牌:{d+}4{d+}2{d+}2_{d+}2_{d+}2_{s+}3_{s+}2=>对正则表达式的近似语法表示歉意,d表示十进制,s表示字符串。

我如何告诉我的解析器,第一个组{d+}4必须位于类的"year"属性中,第二个必须位于"month"属性中等等。

显然,我可以这样做:token.setYear(substring(0,4)),但我想更通用一点,因为我无法控制文件名的结构。我还考虑用startPosition、endPosition、要存储的属性名称和类型定义一个xml结构。

总而言之,我觉得这一切太复杂了。问题是我没有一个单独的分隔符来使用String.split

String input; // yyyyMMdd_HHmm_ss_unitCode_(status)
SpecialClass output;
String regex = "(\d{4})(\d{2})(\d{2})_(\d{2})(\d{2})_(\d{2})_([^_]+)_\((.+)\)";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(input);
if (m.matches())
{
    output.year = m.group(1);
    output.month = m.group(2);
    // etc
}

示例输入:

String input = "20120113_1234_27_500_(33)";

将产生以下组:

Group 1: 2012 //year
Group 2: 01   //month
Group 3: 13   //day
Group 4: 12   //hour
Group 5: 34   //minute
Group 6: 27   //second
Group 7: 500  //unitcode
Group 8: 33   //status

测试程序:http://pastebin.com/upC5R9rP

相关内容

  • 没有找到相关文章

最新更新