2010-01-10 2 views
2

Привет, я пытаюсь заменить азамещающие разрывы строк в JavaScript не работает :(

<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>> '); 
} 

Но он не находит Linebreaks (я проверил с indexOf ('\ n')). ​​

Как это сделать?

ответ

7

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

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

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

0

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

+0

и объект RegExp тоже. ''abc \ ndef'.replace (новый RegExp (' \\ n ',' g '),' \ n >> ')' – ZJR

0

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

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

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

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

Попробуйте

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

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

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 мои разрывы строк, кажется, потеряны ...?

Смежные вопросы