【发布时间】:2019-05-20 08:10:20
【问题描述】:
问题
我有一个爱好项目,旨在通过从组中的个人日历中请求 ics 文件来同步多个日历,以获得计划会议的最佳时间。安排会议的某种懒惰方式:)
但我在阅读 ics 文件时卡住了,原因有两个:
- 我不太懂正则表达式。
- 而且我不知道如何通过字符串操作来实现我的目标。
ics 文件已经结构化,所以我知道我想从BEGIN:VEVENT 开始,并将该文本收集到END:VEVENT。
我希望每个事件在稍后阶段都成为一个类,这样我就可以读取数据并做出呈现给最终用户的决定。
背景
我尝试了正则表达式:BEGIN:VEVENT(?:[\w\s\:\@\.\;\-\=\ä\å\ö\\\,\/\#]*)END:VEVENT,但这不是一个非常有效的方法。因为它收集了所有的事件,而不是将它们分成不同的组。
我一直在使用 regexer.com 来测试我的正则表达式。
不是代码,而是我的工作
这是 ics 文件中的一些文本:
BEGIN:VEVENT
DTSTART:20121220T180000Z
DTEND:20121220T190000Z
DTSTAMP:20190503T064840Z
UID:SomeHash@google.com
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=ACCEPTED;CN=Name;X-NUM-GUESTS=0:mailto:MailAddress
CREATED:20121212T061002Z
LAST-MODIFIED:20121212T061003Z
LOCATION:ALocation
SEQUENCE:1
STATUS:TENTATIVE
SUMMARY:SomeText
TRANSP:OPAQUE
CATEGORIES:http://schemas.google.com/g/2005#event
END:VEVENT
BEGIN:VEVENT
DTSTART:20121213T143000Z
DTEND:20121213T153000Z
DTSTAMP:20190503T064840Z
UID:SomeHash@google.com
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=ACCEPTED;CN=Name;X-NUM-GUESTS=0:mailto:MailAddress
CREATED:20121212T061146Z
LAST-MODIFIED:20121212T061146Z
LOCATION:ALocation
SEQUENCE:1
STATUS:TENTATIVE
SUMMARY:SomeText
TRANSP:OPAQUE
CATEGORIES:http://schemas.google.com/g/2005#event
END:VEVENT
期望的结果
是获取与字符串文本匹配的数组,以便我可以进一步拆分它并创建类。
免责声明
由于这是一个爱好项目,我想接受挑战,而不是使用插件或帮助库。但是,如果我能看到它们如何解决问题,我们将不胜感激。
【问题讨论】:
标签: regex string asp.net-core-2.0 c#-7.0