Многострочное декодирование JavaScript - PullRequest
1 голос
/ 10 мая 2011

У меня есть строка:

<Grid><Description>LINE 1
LINE 2
LINE 3
LINE 4
</Description><</Grid>  

Мне нужно, чтобы она была расшифрована с помощью разрывов строк.Я нашел решение:

function decodeString(stringToDecode) {
    if (!stringToDecode) {
        return stringToDecode;
    }
    return $('<div />').html(stringToDecode).text();
}

Но он делает одну строку и заменяет все разрывы строк пробелами.

Ответы [ 3 ]

1 голос
/ 10 мая 2011

вы можете использовать следующее, чтобы заменить разрывы строк тегами <br /> и затем установить HTML:

return $('<div />').html(stringToDecode.replace(/\n/, '&lt;br /&gt;')).text();
1 голос
/ 10 мая 2011
function decodeString(stringToDecode) {
    return stringToDecode ? $('<div />').html(stringToDecode.replace(/[\n\r]/g, "<br> \r\n")).text() : ""
}
0 голосов
/ 10 мая 2011

Ваш образец имеет CR / LF - но это не разрыв строки в HTML.Вам нужно заменить его допустимым разрывом строки HTML, т. Е. Тегом
.

Ваша функция имеет странный оператор if, который не имеет большого смысла.Зачем возвращать stringToDecode, если вы только что доказали, что он нулевой?Кроме того, $('<div />').html(stringToDecode).text() не будет ничего полезного.

Попробуйте что-то вроде этого:

function decodeString(stringToDecode) {
if (!stringToDecode) {
    return "";
}
var regX = /\\n/g;
var replaceString = '<br> \\n';
return stringToDecode.replace(regX, replaceString);
}
...