JavaScript - замена возврата каретки в FileReader

1

Я читаю в XML файле с другого веб-сайта, и мне нужно заменить любые разрывы строк, которые я получаю в ответ с пробелом, иначе слова будут работать вместе.

Я пробовал это...

    function myFunction(xml) {

            var counter = 0;
            var txtFile = new XMLHttpRequest();
            var captionCounter = 0;
            var captionList = new Array();

            var xmlDoc = xml.responseXML;
            var captions = xmlDoc.getElementsByTagName('text');

            for (i = 0; i < captions.length; i++) {
                var x = xmlDoc.getElementsByTagName('text')[i];
                var y = x.childNodes[0];
                var txt = x.getAttribute("start");
                //document.getElementById("captionComment").innerHTML = document.getElementById("captionComment").innerHTML + "<br/>" + txt + " " + y.nodeValue; 
                captionList[i] = new Array(2);
                captionList[i][0] = txt;
                captionList[i][1] = y.nodeValue;
                captionList[i][1] = captionList[i][1].replace(/&quot;/g, '\\"');
                captionList[i][1] = captionList[i][1].replace(/\r\n/g, ' ');

Но, похоже, он ничего не делает, как будто он не видит, что туда вернулась карета. Вот сайт, который я загружаю: https://www.youtube.com/api/timedtext?&v=lo0X2ZdElQ4&lang=en

и хотя это похоже на подпись "Я должен сказать, что меня очень впечатлило то, как Мэри произнесла мое имя". находится на одной строке, на самом деле он содержит возврат каретки после слова "путь", поэтому я получаю "wayMary" вместо "way Mary". Я сохранил код с этой страницы, и я вижу возврат каретки в файле, который я сохраняю, но javascript по некоторым причинам не видит его. Это, конечно, происходит и в других местах.

  • 0
    Что заставляет вас думать, что это ничего не делает? Он заменит Linefeed и возврата каретки.
  • 0
    Вы пробуете это в HTML, если это так, вам нужно использовать <br /> или что-то еще. Можете ли вы привести минимальный воспроизводимый пример ?
Показать ещё 2 комментария
Теги:
replace
filereader

1 ответ

1
Лучший ответ

Проблема в том, что вы ищете carriage return + linefeed, и данные, как представляется, имеют простые возвращения каретки. Измените линию замены на это, и она должна работать:

captionList[i][1] = captionList[i][1].replace(/\r\n/g, ' ').replace(/[\r\n]/g, ' ');
  • 0
    это было это! Большое спасибо, Джастин! я бы никогда не понял это наверняка.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню