0

我正在编写的一些代码中按照这些思路做一些事情

txt = txt.replaceAll('\n','').replaceAll('<b>','[bold]').replaceAll('</b>','[/bold]')
.replaceAll('<strong>','[bold]').replaceAll('</strong>','[/bold]')....

其中 replaceAll 是 String.prototype 扩展。这完美无缺,但我想知道 -

以这种方式链接太多方法有什么缺点吗?使用在“oneer”中完成工作的正则表达式可能会更好吗?如果是这样,正则表达式会是什么样子?(我不太擅长正则表达式)

4

2 回答 2

1

这可以。正则表达式的替代方法也非常简单,您基本上只需要使用替代方法并确保转义需要转义的内容:Live Example | 直播源

var replacements = {
    '\n':        '',
    '<b>':       '[bold]'
    '</b>':      '[/bold]',
    '<strong>':  '[bold]',
    '</strong>': '[/bold]'
    // ...
};
txt = txt.replace(/\n|<b>|<\/b>|<strong>|<\/strong>/g, function(m) {
    return m in replacements ? replacements[m] : m;
});
于 2013-09-06T06:40:46.143 回答
1

把它们连在一起就好了。但不要将它们全部放在一条线上。如果您重新格式化代码,它会更容易阅读:

txt = txt
    .replaceAll( '\n', '' )
    .replaceAll( '<b>', '[bold]' )
    .replaceAll( '</b>', '[/bold]' )
    .replaceAll( '<strong>', '[bold]' )
    .replaceAll( '</strong>', '[/bold]' );

同样的样式在 jQuery 链中也很有用:

$('<div>Test</div>')
    .css({ fontSize: '16px' })
    .attr({ title: 'Test' })
    .appendTo( 'body' );
于 2013-09-06T06:46:39.857 回答