簡體   English   中英

如何根據空行/空白行拆分字符串?

[英]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其拆分為QString數組,每個項目包含這些部分之一,如下所示:

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

但是,我無法弄清楚如何做到這一點。 我嘗試通過\\r\\n拆分字符串,但這將所有內容拆分為單獨的行,而不是空行。

這是我想從 .srt 文件中獲取數據的例程:

  • 將文件的所有內容讀入QString (按照content命名)。
  • 用空行拆分QString ,並附加到QStringList (沿sections行命名)。
  • 對於sections每個項目,用-->標識符拆分第二行,並將索引01 分別分配給名為startTimeendTime QString變量。
  • 取其余的行(第 2 行之后的所有內容都是字幕文本),並將它們附加到名為subtitleTextQString
  • 將所有收集到的信息添加到SrtSubtitle實例,並將其附加到QList<SrtSubtitle>

我怎樣才能做到這一點?

讀取文本文件時,換行符通常表示為\\n

有了這個,您可以使用 \\n\\n 拆分您的字符串

當它是 2 個新行時,它們之間沒有任何東西,這將拆分它。

我會改進 ziarra 的回答。 您當然希望解決方案是健壯的,並且還可以使用"\\r\\n"而不是"\\n" Windows 行尾。 在這種情況下,ziarra 的解決方案是不夠的。

所以我的建議是分兩步做:

  1. "\\n"替換所有出現的"\\r\\n" "\\n"
  2. "\\n\\n"分割文本(正如 ziarra 建議的那樣)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM