2010-01-10 67 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(new RegExp('\\ n','g'),'\ n >>')' – ZJR 2010-01-10 15:13:57

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

更换块引用后,我换行似乎失去了......?