我正在读取另一个网站的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似乎没有看到它出于某种原因。这当然也发生在其他地方。
答案 0 :(得分:1)
问题在于您正在寻找carriage return + linefeed
,并且数据似乎有简单的回车。将您的替换行更改为此,它应该可以工作:
captionList[i][1] = captionList[i][1].replace(/\r\n/g, ' ').replace(/[\r\n]/g, ' ');