[英]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
每個項目,用-->
標識符拆分第二行,並將索引0和1 分別分配給名為startTime
和endTime
QString
變量。subtitleText
的QString
。SrtSubtitle
實例,並將其附加到QList<SrtSubtitle>
我怎樣才能做到這一點?
讀取文本文件時,換行符通常表示為\\n
有了這個,您可以使用 \\n\\n 拆分您的字符串
當它是 2 個新行時,它們之間沒有任何東西,這將拆分它。
我會改進 ziarra 的回答。 您當然希望解決方案是健壯的,並且還可以使用"\\r\\n"
而不是"\\n"
Windows 行尾。 在這種情況下,ziarra 的解決方案是不夠的。
所以我的建議是分兩步做:
"\\n"
替換所有出現的"\\r\\n"
"\\n"
"\\n\\n"
分割文本(正如 ziarra 建議的那樣)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.