我有一个关于ParseKit和解析时间戳的相当简单的问题……如何强制点/句点的符号性质。
例如,如果我试图解析2008-01-25,我可以使用类似date = /\d{4}/ '-' /\d{2}/ '-' /\d{2}/的代码。事实上,ParseKit附带的date.grammar就可以做到这一点(有趣的是,除非添加@symbolState='-';,否则提供的语法在DemoApp中不起作用,但是我离题了……)
但是,如果我想要解析一个带点的日期,我该怎么办?例如,2008.01.25或2008-01-25-12.34.45。我曾尝试将'.'添加到@symbolState指令中,但一直被忽略。请注意,目前我依赖DemoApp来测试我的语法……我不确定这是否有什么不同。
任何想法都将不胜感激。
发布于 2012-03-16 09:31:22
这里是ParseKit的开发者。
首先,感谢您对date.grammar文件中的bug的提醒。我已经修好了。
至于你的主要问题,我非常确定你正在尝试的东西在ParseKit上是不可能的,直到现在。
也就是说,ParseKit的记号赋予器(PKTokenizer)不能生成only整数Number记号。数字总是被标记为浮点数,这意味着不可能将像3.14这样的输入解析为三个单独的标记3 (数字)、. (符号)、14 (数字)。相反,它将始终被标记为3.14。
好消息:我用一个新方法添加了这个功能:
-[PKNumberState allowsFloatingPoint]默认为YES。
我添加了一个匹配的令牌器指令,您可以在ParseKit语法中使用它,如下所示:
@allowsFloatingPoint = NO;注意,你需要在Google Code上查看最新的主干头部才能看到这个特性。
因此,下面是一个示例日期语法,它大致完成了您使用新功能所要求的功能:
@symbolState = '.';
@allowsFloatingPoint = NO;
@start = date;
date = year dot month dot day;
year = /\d{4}/;
month = /\d{2}/;
day = /\d{2}/;
dot = '.';发布于 2012-03-16 10:45:01
我想知道是否一个更简单的想法是让parseKit简单地将日期解析为字符串,然后将其传递给NSDate::dateWithNaturalLanguageString:locale: orNSDate::dateWithNaturalLanguageString:进行处理。
https://stackoverflow.com/questions/9719612
复制相似问题