写一段autohotkey代码实现以下功能。一段带时间码的字幕文件首先检测是否是时间码行检测如果带有--的就是时间码行然后将当前时间码的结束时间作为下一个时间码行的结束时间。
以下是实现上述功能的AutoHotkey代码:
; 设置时间码行的正则表达式规则
RegexMatch := "\d{2}:\d{2}:\d{2},\d{3} --> \d{2}:\d{2}:\d{2},\d{3}"
; 遍历每一行文本
Loop, read, Subtitles.txt
{
; 如果当前行匹配时间码规则
If RegExMatch(A_LoopReadLine, RegexMatch)
{
; 获取当前时间码的结束时间
endtime := SubStr(A_LoopReadLine, 18, 12)
}
; 如果当前行不是时间码行,但是前一行是时间码行
else If (endtime != "" && endtime != 0)
{
; 将当前行的开始时间设置为前一行的结束时间
starttime := SubStr(A_LoopReadLine, 1, 12)
newLine := starttime . " --> " . endtime . "," . SubStr(A_LoopReadLine, 25)
; 将新的时间码行写入文件
FileAppend, %newLine%`n, Subtitles_New.txt
; 重置结束时间
endtime := ""
}
; 如果当前行不是时间码行,且前一行也不是时间码行
else
{
; 直接将当前行写入文件
FileAppend, %A_LoopReadLine%`n, Subtitles_New.txt
}
}
以上代码首先设置了一个正则表达式规则来匹配时间码行,然后遍历每一行文本。如果当前行匹配时间码规则,则获取当前时间码的结束时间;如果当前行不是时间码行,但是前一行是时间码行,则将当前行的开始时间设置为前一行的结束时间,生成新的时间码行,并写入文件;如果当前行不是时间码行,且前一行也不是时间码行,则直接将当前行写入文件。通过这种方式,实现了将当前时间码的结束时间,作为下一个时间码行的结束时间的功能
原文地址: http://www.cveoy.top/t/topic/hkaX 著作权归作者所有。请勿转载和采集!