如何根据 empty/blank 行拆分字符串?

How to split a string based on empty/blank lines?

我正在编写一个应该解析 .srt 字幕文件的 C++ 应用程序 (Qt Widgets)。文件的每一部分由一个空行分隔,像这样:

1
00:00:08,000 --> 00:00:11,000
[Line]

2
00:00:56,034 --> 00:00:57,492
[Line]
[Another line]

3
00:01:13,676 --> 00:01:15,420
[Line]

基本上,我想将整个文件读入 QString,然后用空行将其拆分为 QString 数组,每个项目包含如下部分之一:

2
00:00:56,034 --> 00:00:57,492
[Line]
[Another line]

但是,我不知道该怎么做。我尝试按 \r\n 拆分字符串,但将所有内容拆分为单独的行,而不是空行。

这是我想到的从 .srt 文件中获取数据的例程:

我怎样才能做到这一点?

新行通常表示为\n

当有 2 个新行且它们之间没有任何内容时要拆分字符串,您可以使用 \n\n 作为分隔符。

我会改进 ziarra 的回答。您当然希望解决方案稳健并且还可以使用 Windows 行结尾,即 "\r\n" 而不是 "\n"。在那种情况下,ziarra 的解决方案是不够的。

所以我的建议是分两步进行:

  1. 将所有出现的 "\r\n" 替换为 "\n"
  2. 将文本拆分为 "\n\n"(如 ziarra 建议的那样)