JavaScript - 拆分属性字符串并附加其他文本

时间:2013-06-13 15:14:44

标签: javascript substring

我有以下div,它具有引用内部文档ID的“number”属性。

    <div class="container" number="+905423871416  +905423871416"></div>
    <div class="container" number="+905423871416></div>

使用JavaScript / jQuery,我可以添加文本“.ID”添加到属性的末尾,尤其是第二项。结果如下所示:“+ 905423871416.ID”。这很棒,效果很好。但是,相同的方法会使第一项略有不同,产生以下结果:“+ 905423871416 + 905423871416.ID”。

我本来想要做的是,将这些个人ID号分开并在其末尾添加“.ID”,用逗号分隔。我理想的结果如下:

<div class="container" number="+905423871416.ID,  +905423871416.ID"></div>

我使用以下内容:

 $('.container').each(function(){
    var number= $(this).attr('number') + '.ID';
  $('#container').append(number);
});

任何帮助将不胜感激。谢谢。

3 个答案:

答案 0 :(得分:1)

我认为最好的解决方案是将String.replace()与正则表达式一起使用。 请查看http://www.w3schools.com/jsref/jsref_replace.asp以获取快速参考和示例。

答案 1 :(得分:0)

您可以像这样使用常规表达式:

$('.container').each(function(){
    var number= $(this).attr('number').replace(/(\+\d+)/g, "$1\.ID,").slice(0,-1);
    $('#container').append(number);
});

它匹配字符串a +后跟一系列数字,并自行替换匹配后跟.ID, 切片只删除最后一个逗号。

答案 2 :(得分:0)

这将获取每个数字属性,将.ID添加到每个数字运行的末尾,并替换数字属性:

$('.container').each(function(){
    var numberattr= $(this).attr('number');
    numberattr=numberattr.replace(/(\+[0-9]+)/g, "$1.ID");
    $(this).attr('number', numberattr);
});

或者更简洁:

$('.container').each(function(){
   $(this).attr('number', $(this).attr('number').replace(/(\+[0-9]+)/g, "$1.ID"));
});