使用javascript遍历字符串并添加标记

使用javascript遍历字符串并添加标记,javascript,jquery,string,Javascript,Jquery,String,我正在做一个网站项目,我有一个包含项目列表的段落(作为ul,它会很好,但需要保持p),每个项目都需要有第一个字母粗体。我创建了一个函数来执行此操作: function inserter(string, splitter, skip) { var array = string.split(splitter); var len = array.length; for(var i = 1; i < len; i++) { var a = array[i]

我正在做一个网站项目,我有一个包含项目列表的段落(作为
ul
,它会很好,但需要保持
p
),每个项目都需要有第一个字母粗体。我创建了一个函数来执行此操作:

function inserter(string, splitter, skip) {
    var array = string.split(splitter);
    var len = array.length;

    for(var i = 1; i < len; i++) {
        var a = array[i];
        var b = '<b>';
        var c = '</b>';
        if(a.substr(0, 3) != skip){ 
            array[i] = splitter + b + a.substr(0,1) + c + a.substr(1);
        } else { 
            array[i] = splitter + a; 
        }
    }
    var strFix = array.join("");
    return strFix;
}

$(function(){
    var text = $(".caps").html();
    text = inserter(text, ': '); //bold the item after ': '
    text = inserter(text, ', ', 'and'); // now bold after the comma ', ' and the skip variable which matches first three letters so the last and doesn't get bold
    text = inserter(text, ', and '); //now for the item after the last 'and'
    $(".caps").html(text);
});
函数插入器(字符串、拆分器、跳过){
var数组=string.split(splitter);
var len=array.length;
对于(变量i=1;i
但是需要为每个不同的拆分器调用它,并对字符串进行迭代(这可能会破坏具有多个拆分器的页面的性能),我想知道如何只调用一次,以便在一次迭代中查看所有拆分器

示例页面:

当您看到该页面时,您将看到我将在jQuery幻灯片中的多个段落上执行此操作

如果这看起来不会对较慢的浏览器的性能造成影响,我会保持原样


感谢您对如何做得更好的建议。

您可以做的一个优化是使用拆分器将字符串拆分为数组,以便在操作完成后加入数组:

function inserter(string, splitter, skip) {
    var array = string.split(splitter);
    var len = array.length;

    for(var i = 1; i < len; i++) {
        var a = array[i];
        var b = '<b>';
        var c = '</b>';
        if(a.substr(0, 3) != skip){ 
            array[i] = b + a.substr(0,1) + c + a.substr(1);
        } else { 
            array[i] = a; 
        }
    }
    return array.join(splitter);

}
函数插入器(字符串、拆分器、跳过){
var数组=string.split(splitter);
var len=array.length;
对于(变量i=1;i
也许你在这里还可以做更多的事情,但这件事突然向我袭来

进一步优化

以下内容从循环中获取变量声明:

function inserter(string, splitter, skip) {
    var array = string.split(splitter);
    var len = array.length;
    var i, a, b='<b>', c='</b>';

    for(i = 1; i < len; i++) {
        a = array[i];
        if(a.substr(0, 3) != skip){ 
            array[i] = b + a.substr(0,1) + c + a.substr(1);
        } else { 
            array[i] = a; 
        }
    }

    return array.join(splitter);    
}
函数插入器(字符串、拆分器、跳过){
var数组=string.split(splitter);
var len=array.length;
变量i,a,b='',c='';
对于(i=1;i
是的,这是个好主意-我可以完全删除else语句;它只是证明了有时候你在自己的代码中看不到显而易见的东西!谢谢。Jon Krrz:如果这个答案是有用的,考虑投票或接受它(点击复选标记)。这将为您赢得声誉和良好意愿,您未来的问题也将更有可能得到回答。这肯定是有帮助的,我对此表示感谢,但就回答有关在更大范围内提高性能效率的问题(或者如何测试它以确定是否需要)而言,它还没有完全回答这个问题。