javascript-删除给定字符前的额外空格

javascript-删除给定字符前的额外空格,javascript,regex,special-characters,str-replace,Javascript,Regex,Special Characters,Str Replace,我有一个函数,它在逗号后增加了一个额外的空格 function fixString1(inp){ var i, len, arr, outp, Rside, Lside, RsideIsNum, LsideIsNum; arr = inp.split(","); outp = ""; for(i=1, len=arr.length; i<len; i++){ Lside = arr[i-1]; Rside = arr[i

我有一个函数,它在逗号后增加了一个额外的空格

 function fixString1(inp){
    var i, len, arr, outp, Rside, Lside, RsideIsNum, LsideIsNum;

    arr = inp.split(",");
    outp = "";

    for(i=1, len=arr.length; i<len; i++){
        Lside = arr[i-1];
        Rside = arr[i];

        LsideIsNum = /\d/.test(Lside.charAt(Lside.length-1));
        RsideIsNum = /\d/.test(Rside.charAt(0));

        outp += "," + ((LsideIsNum && RsideIsNum)?"":" ") + Rside;
    }

    return (arr[0] + outp).replace(/ {2,}/g, " ");
}
函数fixString1(inp){
变量i、len、arr、OUPT、Rside、Lside、RSIDEISUM、LSIDEISUM;
arr=内部拆分(“,”);
outp=“”;

对于(i=1,len=arr.length;i在函数声明中添加一个指示字符的参数。如果只想运行函数一次,则可以在拆分函数中提供一组字符,例如
inp.split(“,”)

我不确定我是否完全理解您想要做什么,但我认为您可以更简洁地做到:

function fixString1( inp ) {
  return inp.replace(/(\d)\s+([,!?:.])\s*(\d)/g, "$1$2$3")
    .replace(/\s*([,!?:.])\s+/g, "$1 ");
}
第一个正则表达式查找特殊字符两侧的数字,左边有中间空格,右边可能有中间空格。它用两个数字和特殊字符替换,而不带空格


第二个正则表达式处理特殊字符周围的所有其他空格。它去掉所有此类空格,并确保特殊字符后面有一个空格。

无正则表达式的解决方案。

var str=“a givi,asdad,saba a.sdada!hasdjahj?asdas asd as luka,”;
函数fixString(str){
var temp=“”,
计数=0;
str.split(“”).forEach(函数(值、索引、数组){
var next=数组[索引+1],
x=value.charCodeAt(),
isChar=((x>=65&&x=97&&x 0&&value!==“”){
temp+=((下一个和下一个!=)| |(temp.length>0&&isChar)?“”:“”)+value;
计数=0;
}否则{
温度+=数值;
}
});
返回温度;
}
log(fixString(str));

您可能可以用一个简单的正则表达式替换来完成整个过程。您需要更好地描述您希望对输入字符串执行的操作。您应该提供一些示例输入和预期输出。好的,那么我们来看看我的答案。我想您的意思是希望数字显示为“123456”或类似的数字“你好,世界"@Pointy是的,你是对的。这个函数工作得很好,只在逗号之前删除空格。你的函数没有在逗号之前删除空格,实际上是相反的,它在逗号之后添加空格……你测试过吗?如果你不懂自己的代码,很难帮助你。如果OP必须对10个特殊字符执行同样的操作,这不是一个很好的解决方案字符。如果可能的话,我只想调用这个函数一次。我为每个字符调用这个函数,比如fixString1(inp,specialchar),并且我以这种方式修改了这个函数。
var str = "    a   a    givi , asdad , saba  a   .  sdada! hasdjahj    ?  asdas asd as   luka    ,      ";

function fixString(str) {
    var temp = "",
        count = 0;
    str.split("").forEach(function (value, index, array) {
        var next = array[index + 1],
            x = value.charCodeAt(),
            isChar = ((x >= 65 && x <= 90) || (x >= 97 && x <= 122));
        if (value === " ") {
            count++;
        } else if (count > 0 && value !== " ") {
            temp += ((next && next !== " ") || (temp.length > 0 && isChar) ? " " : "") + value;
            count = 0;
        } else {
            temp += value;
        }
    });
    return temp;
}
console.log(fixString(str));