JavaScript中的字符串替换

时间:2009-11-11 18:59:05

标签: javascript

我有两个字符串:

var str1 = '8***8***';
var str2 = '898-8293';

如何用第二个字符串中的html元素包装第一个字符串中的数字,如下所示:

'<b>8</b>98-<b>8</b>293'

注意:并非所有'8'数字都被包裹。

[编辑]

感谢Soufiane Hassou和旅行者以下工作:

<script type="text/javascript">
var str1 = '8***8***';
var str2 = '898-8293';

var result = [];

var arr1 = str1.split('');
var arr2 = str2.split('');

for (var i = 0; i < arr2.length; i++) {
    if (arr1[i] == arr2[i]) {
        result.push('<b>' + arr2[i] + '</b>');
    }
    else {
        result.push(arr2[i]);
    }
}

var newStr = result.join('');
</script>

4 个答案:

答案 0 :(得分:0)

var result='';
for(int i = 0; i < str2.length; i++) {
   if(str2[i] == str1[i] {
      result+='<b>' + str1[i] + '</b>';
   }
   else {  result+=str2[i]; }

}

这是你想要做的吗?

答案 1 :(得分:0)

highlight_string = function(str, mask){

    var result='';
    str1 = mask.split("");
    str2 = str.split("");
    for(int i = 0; i < str2.length; i++) {
       if((str1[i] == "*") || (str2[i] == str1[i])) {
          result+='<b>' + str1[i] + '</b>';
       }
       else {  result+=str2[i]; }
    }
    return result;
}

扩展Soufiane Hassou's answer,我认为这更接近您所寻找的目标。

答案 2 :(得分:0)

看起来你实际上要做的不是组合两个字符串,而是将str1中的正则表达式与str2中的值匹配。如果是这种情况,您可能希望将str1更改为正则表达式并针对它测试str2。像这样:

/[8]\d{2}[-][8]\d{3}/.test('898-8293');
//or
/[8]\d*[-][8]\d*/.test('898-8293');
//or
/[8].*[-][8].*/.test('898-8293');
//or
/[8].*[8].*/.test('898-8293');

答案 3 :(得分:0)

var str2 = '898-8293';
var str3 = str2.replace(/(\d{1})(\d{2})(-)(\d{1})(\d{3})/g, '<br>$1</br>$2$3<br>$4</br>$5');
alert(str3);

获胜。