Почему мой текст короче при копировании в 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,'');

(Я просто изменил поиск на глобальное регулярное выражение) Теперь длина соответствует.

Другие вопросы по тегам