使用正则表达式替换除第一次出现的空白子串之外的所有内容

时间:2011-12-21 21:14:26

标签: javascript jquery regex

以下声明可以正常运行:

$wb.upLinearLoad.append('<div>' + sprintf("%5s%8.1f to%7.1f%8.1f%6.0f%8.0f",sLinearSegName[i][j],fLinearPtBA[i][j],fLinearPtBA[i][j+1],fLen,fLinearPtPpi[i][j],fLinearSegMaxWt[i][j]).replace(/ /," &nbsp;") + '</div>');

但是,我现在需要动态更改最后两个变量的颜色,所以我决定将它们放在一个带有class ='wt'的范围内以控制它们的颜色。这给出了:

$wb.upLinearLoad.append('<div>' + sprintf("%5s%8.1f to%7.1f%8.1f<span class='wt'>%6.0f%8.0f</span>",sLinearSegName[i][j],fLinearPtBA[i][j],fLinearPtBA[i][j+1],fLen,fLinearPtPpi[i][j],fLinearSegMaxWt[i][j]).replace(/ /," &nbsp;") + '</div>');

失败,因为span和class之间的空格变为&nbsp;

我的正则表达式能力仅与示例有关,因此问题是如何将除第一个空格之外的所有空格更改为&nbsp;

欢迎任何和所有建议,特别是如果您发现我的整个方法都很差。

1 个答案:

答案 0 :(得分:0)

不要使用字符串。相反,使用jQuery / DOM操作。它不容易出错,效率更高。

$wb.upLinearLoad.append(
    $('<div>').append(
        sprintf("%5s%8.1f to%7.1f%8.1f", sLinearSegName[i][j], fLinearPtBA[i][j], fLinearPtBA[i][j+1], fLen),
        $('<span>').addClass('wt').text(sprintf("%6.0f%8.0f</span>", fLinearPtPpi[i][j], fLinearSegMaxWt[i][j]))[0]
    )
);