Closed FaiChou closed 7 months ago
有点奇怪, 下面这段代码中, newLine = scanner.scanCharacters(from: .newlines)
总是 nil
:
repeat {
if let str = scanner.scanUpToCharacters(from: .newlines) {
text += str
}
newLine = scanner.scanCharacters(from: .newlines)
if newLine == "\n" {
text += "\n"
}
} while newLine == "\n"
我在intel的设备上跑SubtitleTest 这个test是成功的,parts.count返回的是7。
需要改字幕的内容吗?
我在intel的设备上跑SubtitleTest 这个test是成功的,parts.count返回的是7。
count 应该是没问题的,但解析是有问题的。
你跑下这个:
let text1 = """
第一行
第二行
"""
let text2 = "abc\ndef"
let scanner = Scanner(string: text1)
var text = ""
var newLine: String?
if let str = scanner.scanUpToCharacters(from: .newlines) {
text += str
}
print(text) // 第一行
newLine = scanner.scanCharacters(from: .newlines)
print(newLine) // nil
这个 newLine 是不是空。在我的电脑上 text1 和 text2 测试都是空。
我的这个test里面返回的内容哪里有问题呢?我看了返回的文案是有两行的。你可以为我的这个test增加XCTAssertEqual。然后我看下对不对。
哦今天测试了下,确实不是这个地方导致的bug,我忽略了 scaner.charactersToBeSkipped = nil
。
但有些 SRT 字幕就是有问题, 我打印了一下,好几百条字幕同时出现:
var body: some View {
VStack {
Spacer()
let _ = print(model.parts.count)
ForEach(model.parts) { part in
part.subtitleView
}
字幕文件我发你邮箱。
如果遇到多行文本时候,解析会出错。
可以跑一下这个测试: https://github.com/kingslay/KSPlayer/blob/develop/Tests/KSPlayerTests/SubtitleTest.swift#L4
有问题的代码应该是这附近: https://github.com/kingslay/KSPlayer/blob/develop/Sources/KSPlayer/Subtitle/KSParseProtocol.swift#L432
下面是我 parse 的测试结果: