Почему мой текст короче при копировании в html?
Почему текст напрямую копируется из переменной, а его длина сразу меньше?
Примечание. Это происходит внутри приложения xulrunner. (вероятно, то же самое произошло бы в Firefox)
var data = NetUtil.readInputStreamToString(inputStream, inputStream.available(),{charset:"UTF-8"});
dump(data.length); //1050
document.body.innerHTML = data;
dump(document.body.innerHTML.length); //1027
if (data!=tempbody.innerHTML) dump("Content has been edited"); //wrong
/*
data:
first
second...
*/
Когда я печатаю каждый символ в обеих строках, некоторые совпадают ни с чем, извлекаем:
for(var i=0;i<data.length;i++) dump(data[i]+":"+tempbody.innerHTML[i]+".");
/*Output:
:f:f.i:i.r:r.s:s.t:t.
.
:
:s.
:e.s:c.e:o.c:n.o:d....
*/
Я пытался удалить \r и \n в данных, но только на 2 символа меньше 1050->1048
data = data.replace('\r','').replace('\n','');
for(var i=0;i<data.length;i++) dump(data[i]+":"+tempbody.innerHTML[i]+".");
/*Output
:f:f.i:i.r:r.s:s.t:t.
.
:s.s:e.e:c.c:o.o:n.n:d.d:...
*/
1 ответ
Решение
Я не знаю, почему я думал, что замена без добавления регулярного выражения фактически заменит каждый символ в тексте:
data = data.replace(/\r/g,'');
(Я просто изменил поиск на глобальное регулярное выражение) Теперь длина соответствует.