AutoHotkey 代码:自动调整字幕时间码
以下是实现以上功能的 AutoHotkey 代码:
;读取 subtitles.txt 文件
FileRead, fileContent, subtitles.txt
;将文件内容转换成行数组
StringSplit, lines, fileContent, `n
;循环遍历每一行
for i, line in lines {
;如果是时间码行
if (RegExMatch(line, '^\d\d:\d\d:\d\d,\d\d\d --> \d\d:\d\d:\d\d,\d\d\d$')) {
;获取结束时间
endTime := RegExReplace(line, '.* --> (\d\d:\d\d:\d\d,\d\d\d)$', '$1')
;如果不是第一行
if (i > 1) {
;将上一行的结束时间作为此行的开始时间
lines[i-1] := RegExReplace(lines[i-1], '^(.* --> )\d\d:\d\d:\d\d,\d\d\d$', '$1' . endTime)
}
}
}
;将行数组拼接成字符串
newFileContent := lines.Join('`n')
;将新的内容写回 subtitles.txt 文件
FileDelete, subtitles.txt
FileAppend, %newFileContent%, subtitles.txt
代码解释:
- 通过
FileRead命令读取 subtitles.txt 文件内容到变量fileContent中。 - 使用
StringSplit命令将fileContent转换成行数组。 - 循环遍历行数组,对于每一行:
- 使用正则表达式判断是否为时间码行。
- 如果是时间码行,使用正则表达式获取结束时间。
- 如果不是第一行,将上一行的结束时间替换为此行的开始时间。
- 使用
Join命令将行数组拼接成字符串。 - 使用
FileDelete命令删除原来的 subtitles.txt 文件。 - 使用
FileAppend命令将新的内容写回 subtitles.txt 文件。
原文地址: https://www.cveoy.top/t/topic/oM1x 著作权归作者所有。请勿转载和采集!