【发布时间】:2012-01-12 17:17:55
【问题描述】:
我得到了一个格式如下的字符串:yyyyMMdd_HHmm_ss_unitCode_(status)。 我需要将每个组件映射到专用类的属性。
我想用这样的正则表达式来定义我的令牌:
{d+}4{d+}2{d+}2_{d+}2_{d+}2_{s+}3_{s+}2 => 为近似的正则表达式道歉,d 是十进制,s 是字符串。
我如何告诉我的解析器第一组 {d+}4 必须放在我班级的“年”属性中,第二组必须放在“月”属性中,依此类推。
显然,我可以这样做:token.setYear(substring(0,4)),但我想更通用一点,因为我无法控制文件名的结构。
我还考虑过定义一个 xml 结构,其中包含 startPosition、endPosition、要存储和键入的属性名称。
总而言之,我认为这一切都太复杂了。问题是我没有一个分隔符来使我能够使用String.split。
【问题讨论】:
-
你要解析一个字符串,你打算用正则表达式,但是你不知道字符串的结构?这真的很令人困惑。如果您不知道字符串的结构,我看不出您如何解析它。
-
好问题。我没有得到的一件事是:“我无法控制文件名的结构”。所以字符串是文件名?
-
我知道结构可以改变,这就是为什么我想通过正则表达式来定义它,以便能够随着结构的变化调整我的代码。
-
是的,字符串是一个文件名:)
标签: java string mapping stringtokenizer