замена разрывов строк в javascript не работает :( - PullRequest
2 голосов
/ 10 января 2010

Привет, я пытаюсь заменить

<blockquote>...</blockquote>

с

>> ...

Это мой код:

var testhtml = 'sdkjhfbs <blockquote>skldfjsfkjghbs\n sdjkfhb ksdbhv isl\n kdjbhdfgkj bs</blockquote>kdjfgnkdfj';
alert(blockquoteConvert(testhtml));

function blockquoteConvert(html) {
    return '>>' + html.
        replace(/<blockquote>([^]+)<\/blockquote>/gi,"$1").
        replace('/\n/','\n>> ');
}

Но он не находит разрывов строк. (Я проверил с помощью indexOf ('\ n')). ​​

Как я могу это сделать?

Ответы [ 6 ]

7 голосов
/ 10 января 2010

Попробуйте без кавычек:

replace(/\n/g,'\n>> ')

Теперь разделители являются частью синтаксиса объявления буквального регулярного выражения, а не частью самого шаблона.

0 голосов
/ 10 января 2010

Хорошо, теперь я в замешательстве. Попробуйте это, пожалуйста:

var testhtml = 'sdkjhfbs <blockquote>skldfjsfkjghbs\n sdjkfhb ksdbhv isl\n kdjbhdfgkj bs</blockquote>kdjfgnkdfj';
alert(convertLineBreaks(testhtml));
alert(blockquoteConvert(testhtml));

function blockquoteConvert(html) {
    return html
        .replace(/<blockquote>([^]+)<\/blockquote>/gi,convertLineBreaks("$1"));
}

function convertLineBreaks(text) {
    return '>>' + text.replace(/\n/g,'\n>> ');
}

После замены blockquote мои разрывы строк кажутся потерянными ...?

0 голосов
/ 10 января 2010

Попробуйте это

var testhtml = 'sdkjhfbs <blockquote>skldfjsfkjghbs\n sdjkfhb ksdbhv isl\n kdjbhdfgkj bs</blockquote>kdjfgnkdfj';
alert(blockquoteConvert(testhtml));

function blockquoteConvert(id) {
car text = document.getElementById(id).value;
text = text.replace(/\n\r?/g, '>>');
}


Or use jquery 
$('#caption').html($('#caption').text().replace(/\n\r?/g, '>>'));
0 голосов
/ 10 января 2010

Вы были близки, но не соответствовали синтаксису:

function blockquoteConvert(html) {
    return '>> ' + html.
        replace(/<blockquote>([^]+)<\/blockquote>/gi,"$1").
        replace(/\n/g,'\n>> ');
}
0 голосов
/ 10 января 2010

Вам нужно сделать глобальную замену, иначе замена будет соответствовать только первой новой строке. Кроме того, вы не можете использовать кавычки вокруг своего регулярного выражения, поскольку косые черты станут частью строки поиска, поэтому попробуйте следующее:

replace(/\n/g,'\n>> ')
0 голосов
/ 10 января 2010

Использование двойной обратной косой черты \\n должно помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...