我正在撰寫一個應該決議 .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]
基本上,我想將整個檔案讀取到 a QString,并通過空行將其拆分為QString陣列,每個專案包含這樣的部分之一:
2
00:00:56,034 --> 00:00:57,492
[Line]
[Another line]
但是,我無法弄清楚如何做到這一點。我嘗試用\rand拆分字串\n,但是將所有內容拆分為單獨的行,而不是空行。
這是我想從 .srt 檔案中獲取資料的例程:
- 將檔案的所有內容讀到一個
QString(按照 的行命名content)。 QString按空行拆分,QStringList并附加到 a (沿 的行命名sections)。- 對于每個專案
sections,分割由所述第二線路-->識別符號,并分配索引0和1至QString變數叫startTime,和endTime分別。 - 取其余的行(第 2 行之后的所有內容都是副標題文本),并將它們附加到一個
QString被呼叫的subtitleText. - 將所有收集到的資訊添加到一個
SrtSubtitle實體中,并將其附加到QList<SrtSubtitle>
我怎樣才能做到這一點?
uj5u.com熱心網友回復:
新行通常表示為\n。
要在有 2 個新行之間沒有任何內容時拆分字串,您可以將其\n\n用作分隔符。
uj5u.com熱心網友回復:
我會改進 ziarra 的回答。您當然希望解決方案是健壯的,并且還可以使用 Windows 行結尾而"\r\n"不是"\n". 在這種情況下,ziarra 的解決方案是不夠的。
所以我的建議是分兩步做:
- 替換所有出現的
"\r\n"with"\n" - 拆分文本
"\n\n"(如 ziarra 建議的那樣)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/349132.html
