在某些字符前后添加字符串中的空格
问题描述:
我想在字符串前后添加某些字符的空格。在某些字符前后添加字符串中的空格
var x = "asdasdasdasd+adasdasdasd/asdasdasdasd*asdasdasd-asdasdasd:asdasdasdadasdasd?";
我想之前和之后
var separators = ['+', '-', '(', ')', '*', '/', ':', '?'];
添加空间所以输出会像
asdasdasdasd + adasdasdasd/asdasdasdasd * asdasdasd - as (dasd) asd : asdasdasdadasdasd ?
答
你可以使用正则表达式。
for (var i = 0; i < separators.length; i++) {
var rg = new RegExp("\\" + separators[i], "g");
x = x.replace(rg, " " + separators[i] + " ");
}
答
您可以使用类似的东西:
var str = x.replace(new RegExp('\\' + separators.join('|\\'), 'g'), ' $& ')
答
嗯,这看起来相当容易......
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中的分隔符的出现。
答
你可以试试这个| 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);
}
我收到错误 '未捕获的SyntaxError:无效的正则表达式:/ [+ - ()*/:?] /:范围乱序中字符类' – Okky
@SreekeshOkky啊,这是'加盟问题。请参阅更新的版本。它应该工作正常。 – VisioN