下行与下降替代方案 - JS方法链接

时间:2013-09-06 06:29:34

标签: javascript replace

我正在编写一些代码中的这些内容

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

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

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

2 个答案:

答案 0 :(得分:1)

这很好。正则表达式的替代方案也很简单,你基本上只需要使用替换,并确保逃避需要转义的内容:Live Example | Live Source

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

答案 1 :(得分: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' );