使用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:如果这个答案是有用的,考虑投票或接受它(点击复选标记)。这将为您赢得声誉和良好意愿,您未来的问题也将更有可能得到回答。这肯定是有帮助的,我对此表示感谢,但就回答有关在更大范围内提高性能效率的问题(或者如何测试它以确定是否需要)而言,它还没有完全回答这个问题。