Вы можете split
текст на каждом \n
и проходить по каждой строке.Затем используйте регулярные выражения
/(\d+.\d+) : (\d+.\d+) = (.*)/
и match
, чтобы указать время начала и окончания и субтитры для разделения групп захвата
function findSubtitle(text, time) {
let lines = str.split("\n");
for (let i = 0; i < lines.length; i++) {
[,start, finish, subtitle] = lines[i].match(/(\d+.\d+) : (\d+.\d+) = (.*)/);
if (time >= start && finish >= time) {
return subtitle
}
}
}
let str = `45.123 : 55.002 = this_is_subtitle_of_video
58.101 : 64.022 = next_text_and_so_on
458.101 : 564.022 = final_text_of_video`
console.log(findSubtitle(str, 60.006))
console.log(findSubtitle(str, 48))
Если вы хотите повторно найти субтитры из этого текста, вы можете использовать map
для создания массива субтитров.Всякий раз, когда вам нужно find
субтитров, вызывайте функцию с массивом и временем.Таким образом, вам не нужно split
и match
каждый раз, когда вам нужны субтитры
function findSubtitle(array, time) {
let inner = array.find(a => time >= a[0] && a[1] >= time) || [];
return inner[2];
}
let str = `45.123 : 55.002 = this_is_subtitle_of_video
58.101 : 64.022 = next_text_and_so_on
458.101 : 564.022 = final_text_of_video`
let subArray = str.split("\n")
.map(a => a.match(/(\d+.\d+) : (\d+.\d+) = (.*)/).slice(1))
console.log(findSubtitle(subArray, 60))
console.log(findSubtitle(subArray, 48))