2

我想在某些字符之前和之后在字符串中添加空格。

var x = "asdasdasdasd+adasdasdasd/asdasdasdasd*asdasdasd-asdasdasd:asdasdasdadasdasd?";

我想在前后添加空间

var separators = ['+', '-', '(', ')', '*', '/', ':', '?'];

所以输出会像

asdasdasdasd + adasdasdasd / asdasdasdasd * asdasdasd - as ( dasd ) asd : asdasdasdadasdasd ?
4

4 回答 4

3

您可以为此使用正则表达式。

for (var i = 0; i < separators.length; i++) { 
      var rg = new RegExp("\\" + separators[i], "g"); 
      x = x.replace(rg, " " + separators[i] + " "); 
}
于 2013-10-11T08:49:56.403 回答
3

你可以使用类似的东西:

var str = x.replace(new RegExp('\\' + separators.join('|\\'), 'g'), ' $& ')
于 2013-10-11T08:48:48.893 回答
1

你可以试试这个| 演示

function fix(val)
{
  var separators = ['+', '-', '(', ')', '*', '/', ':', '?'];
  var result="";
  flag=true;
  for(var i=0;i<val.length;i++)
  {
     flag=true;
     for(var j=0;j<separators.length;j++)
     {
        if(val[i]==separators[j])
        {
            result += " " + val[i] + " ";
            flag=false;         
        }
     }
     if(flag)
     {
            result +=val[i];
     }
}

alert(result);
}
于 2013-10-11T08:55:51.983 回答
0

好吧,这看起来很容易......

var separators = ['+', '-', '(', ')', '*', '/', ':', '?'];
var x = "asdasdasdasd+adasdasdasd/asdasdasdasd*asdasdasd-asdasdasd:asdasdasdadasdasd?";
$(separators).each(function (index, element) {
    x = x.replace(element, " " + element + " ");
});

这是一个小提琴:http: //jsfiddle.net/gPza4/

对于想要理解这段代码的人来说,我基本上所做的是将分隔符数组制作成一个 jQuery 对象,然后对其进行迭代,同时用它们的“间隔”形式替换字符串 x 中这些分隔符的出现。

于 2013-10-11T08:55:31.840 回答