2013-10-11 141 views
2

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

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

我想之前和之后

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

添加空间所以输出会像

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

回答

1

你可以使用正则表达式。

for (var i = 0; i < separators.length; i++) { 
     var rg = new RegExp("\\" + separators[i], "g"); 
     x = x.replace(rg, " " + separators[i] + " "); 
} 
2

您可以使用类似的东西:

var str = x.replace(new RegExp('\\' + separators.join('|\\'), 'g'), ' $& ') 
+0

我收到错误 '未捕获的SyntaxError:无效的正则表达式:/ [+ - ()*/:?] /:范围乱序中字符类' – Okky

+0

@SreekeshOkky啊,这是'加盟问题。请参阅更新的版本。它应该工作正常。 – VisioN

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”替换字符串x中的分隔符的出现。

1

你可以试试这个| Demo

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); 
} 
相关问题