Популярный формат файла для хранения субтитров называется SubRip Text (SRT), и он часто используется для предоставления скрытых субтитров для видео. Вам может потребоваться преобразовать данные SRT в обычный текст, если вы используете файлы SRT в проекте JavaScript. В этом посте мы рассмотрим, как это сделать с помощью регулярных выражений JavaScript (regex).

SubRip Subtitle, или сокращенно srt, — это популярный формат текстового файла для хранения субтитров. В этом посте будет показано, как использовать регулярные выражения JavaScript для преобразования srt в текст.

Используя регулярные выражения в JavaScript, вы можете преобразовать srt в текст различными способами. Здесь мы опишем два подхода, которые вы можете использовать для достижения этой цели.

Вот метод преобразования srt в текст с помощью javascript и regex.

Как преобразовать srt в текст с помощью javascript и regex

JavaScript предоставляет функцию для преобразования файла субтитров SRT (SubRip Text) в текст с использованием регулярного выражения:

function convertSrtToText(srt) {
  // Use a expressão regular para remover os números de linha e as marcas de tempo
  return srt.replace(/^\d+\n([\d:,]+ --> [\d:,]+\n)/gm, '');
}

Эта функция удаляет номера строк и метки времени из файла SRT с помощью регулярного выражения. Без номеров строк и временных меток он возвращает текст, оставшийся в файле SRT.

Просто вызовите функцию, указав содержимое файла SRT в качестве параметра, как в примере ниже, чтобы использовать его.

var srt = "1\n00:00:10,500 --> 00:00:13,000\nTexto da linha 1\n\n2\n00:00:13,500 --> 00:00:16,000\nTexto da linha 2\n\n3\n00:00:16,500 --> 00:00:19,000\nTexto da linha 3\n";
var text = convertSrtToText(srt);
console.log(text); // Exibe "Texto da linha 1\n\nTexto da linha 2\n\nTexto da linha 3\n"

Использование модуля ФС

Нам нужен модуль fs, который позволяет нам взаимодействовать с файловыми системами различными способами для обработки текста SRT.

Нам требуется среда Node.js и приведенная ниже команда для установки модуля fs.

npm install fs

Теперь, когда у нас есть модуль fs, мы можем использовать методы регулярных выражений для преобразования srt в текст.

Использование метода замены ()

Сначала вам нужно будет прочитать содержимое файла srt с помощью модуля fs в Node.js, чтобы преобразовать файл srt в текст в JavaScript с помощью регулярных выражений. Затем текст из файла srt необходимо извлечь с помощью регулярного выражения. Вот иллюстрация того, как это можно сделать:

const fs = require('fs');
// Read the contents of the srt file
const srtFile = fs.readFileSync('/path/to/file.srt', 'utf8');
// Use a regular expression to extract the text from the srt file
const text = srtFile.replace(/^\\d+\\n(\\d{2}:\\d{2}:\\d{2},\\d{3} --> \\d{2}:\\d{2}:\\d{2},\\d{3})\\n/gm, '');
console.log(text);

Выход

1
00:00:51,916 --> 00:00:54,582
'London in the 1960s.
2
00:00:54,708 --> 00:00:57,124

«У всех была история о Краях.
Отметка времени и информация о говорящем в начале каждой строки в файле srt в этом примере сопоставляются с использованием регулярного выражения /d+n(d2:d2:d2,d3 → d2:d2:d2,d3)н/гм. Затем сохраняется только сам текст с использованием метода replace() для удаления этих данных.

Использование метода match()

Вот еще один способ преобразования файла srt в текст в JavaScript:

const fs = require('fs');
// Read the contents of the srt file
const srtFile = fs.readFileSync('/path/to/file.srt', 'utf8');
// Split the srt file into an array of lines
const lines = srtFile.split('\\n');
// Use a for loop to iterate over the lines in the array
for (let i = 0; i < lines.length; i++) {
  // Skip the lines that start with a timestamp or speaker information
  if (lines[i].match(/^\\d+$/) || lines[i].match(/^\\d{2}:\\d{2}:\\d{2},\\d{3} --> \\d{2}:\\d{2}:\\d{2},\\d{3}$/)) {
    continue;
  }
  // Print the remaining lines, which should be the text from the srt file
  console.log(lines[i]);
}

Выход

1
00:00:51,916 --> 00:00:54,582
'London in the 1960s.
2
00:00:54,708 --> 00:00:57,124

«У всех была история о Краях.
В этом методе содержимое файла srt разбивается на массив строк с помощью метода split(). Затем строки в массиве повторяются в цикле for, и регулярное выражение используется для определения того, начинается ли каждая строка с даты или информации о динамике. Если это так, цикл переходит к следующей итерации. Если нет, то вместе со строкой в ​​консоль выводится текст из файла srt.

Преобразование SRT с использованием модулей JS

Существуют и другие методы, помимо JavaScript, для преобразования файлов SRT в текст. Вы можете подумать о следующих вариантах:

модуль srt-to-vtt

Использование модуля SRT-to-VTT Чтобы преобразовать файлы SRT в текст, используйте пакет npm, известный как srt-to-vtt. Вы должны установить его, используя следующую команду, прежде чем использовать его:

npm установить srt-to-vtt

Затем используйте следующий код:

const srtToVtt = require('srt-to-vtt');
srtToVtt.convertSrtToVtt('path/to/input.srt', 'path/to/output.vtt', (err) => {
  if (err) {
    console.error(err);
  } else {
    console.log('Conversão concluída com sucesso');
  }
});

модуль srt-to-txt

Использование модуля SRT-to-TXT Другим пакетом npm, который можно использовать для преобразования файлов SRT в текст, является модуль srt-to-txt. Вы должны установить его, используя следующую команду, прежде чем использовать его:

npm установить srt-to-txt

const srtToTxt = require('srt-to-txt');
srtToTxt('path/to/input.srt').then((text) => {
  console.log(text);
});

Библиотека SubRip-текста

Использование библиотеки SubRip-Text Файлы SRT можно читать и редактировать с помощью библиотеки JavaScript, известной как SubRip-Text. Вы должны установить его, используя следующую команду, прежде чем использовать его:

npm установить субрип-текст

const SubRipText = require('subrip-text');
const srt = new SubRipText('path/to/input.srt');
console.log(srt.getPlainText());

Другие способы преобразования SRT в TXT

Существуют и другие методы преобразования файла SRT в текст (TXT). Можно подумать о следующих вариантах:

Использование онлайн-конвертера. Вы можете конвертировать файлы SRT в текст с помощью различных онлайн-конвертеров. Конвертер выполнит преобразование для вас после того, как вы загрузите файл SRT.

Используйте текстовый редактор. Текстовые редакторы с функциями удаления номеров строк и меток времени из файлов SRT включают Notepad++ и Sublime Text. Эти настройки можно использовать для удаления этих компонентов и сохранения файла в виде обычного текстового файла.

Использование сценария командной строки. Если вам нужно автоматически преобразовать большое количество файлов SRT во время работы с ними, может быть полезно использовать сценарий командной строки, аналогичный описанному в этом посте.

Краткое содержание

Для хранения субтитров в текстовом файле часто используется формат SRT. Он часто используется для показа закрытых субтитров к видео. В JavaScript можно использовать регулярные выражения для преобразования данных SRT в обычный текст.

Вы можете сделать это, прочитав содержимое файла SRT с помощью модуля fs в Node.js. Затем текст из файла SRT можно извлечь с помощью регулярного выражения. Один из способов — удалить временную метку и информацию о динамике в начале каждой строки с помощью метода replace(). Другая стратегия состоит в том, чтобы вывести оставшиеся строки, которые должны содержать текст из файла SRT, после использования метода match() для игнорирования любых строк, начинающихся с даты или имени говорящего.

Важно помнить, что, поскольку файлы SRT могут иметь разные форматы, эти методы могут не всегда работать. Если вы хотите извлечь текст из файла SRT, вам может потребоваться изменить регулярные выражения или попробовать другую стратегию.

👉 Для получения более подробной информации посетите здесь: [BackLinks]