【问题标题】:How do i capture text between two string values? [duplicate]如何捕获两个字符串值之间的文本? [复制]
【发布时间】:2019-05-20 08:10:20
【问题描述】:

问题

我有一个爱好项目,旨在通过从组中的个人日历中请求 ics 文件来同步多个日历,以获得计划会议的最佳时间。安排会议的某种懒惰方式:)

但我在阅读 ics 文件时卡住了,原因有两个:

  1. 我不太懂正则表达式。
  2. 而且我不知道如何通过字符串操作来实现我的目标。

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


    【解决方案1】:

    尝试使用 BEGIN:VEVENT([\s\S]*?)END:VEVENT

    我使用 Regex101.com 进行正则表达式,希望这会有所帮助

    【讨论】:

      【解决方案2】:

      正则表达式通常非常适合提取文本。但在这种简单的情况下,您可以尝试这样的事情:

      var preambleLenght = "BEGIN:VEVENT\r\n".Length;
      var text = ics.Substring(preambleLenght, ics.LastIndexOf("\r\nEND:VEVENT") - preambleLenght);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-02-27
        • 1970-01-01
        • 2015-10-09
        • 2018-03-22
        • 2022-01-22
        • 1970-01-01
        相关资源
        最近更新 更多