Я читаю в 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(/"/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 по некоторым причинам не видит его. Это, конечно, происходит и в других местах.
Проблема в том, что вы ищете carriage return + linefeed
, и данные, как представляется, имеют простые возвращения каретки. Измените линию замены на это, и она должна работать:
captionList[i][1] = captionList[i][1].replace(/\r\n/g, ' ').replace(/[\r\n]/g, ' ');
<br />
или что-то еще. Можете ли вы привести минимальный воспроизводимый пример ?