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));