删除JavaScript中字符串的第(n)个空格
我试图从几个动态生成的字符串中删除一些空格。删除哪个空格取决于字符串的长度。字符串一直在变化,所以为了知道有多少个空格,我迭代字符串,每次迭代遇到空格时增加一个变量。我已经可以用删除JavaScript中字符串的第(n)个空格,javascript,string,replace,Javascript,String,Replace,我试图从几个动态生成的字符串中删除一些空格。删除哪个空格取决于字符串的长度。字符串一直在变化,所以为了知道有多少个空格,我迭代字符串,每次迭代遇到空格时增加一个变量。我已经可以用str.replace(“”,”)删除所有特定类型的字符其中'str'是我的字符串的名称,但我只需要删除一个特定的空格,而不是所有的空格。假设我的字符串是 var str = "Hello, this is a test."; 如何仅删除单词“is”后的空格?(假设下一个字符串不同,所以我不能只写str.replace
str.replace(“”,”)删除所有特定类型的字符代码>其中'str'是我的字符串的名称,但我只需要删除一个特定的空格,而不是所有的空格。假设我的字符串是
var str = "Hello, this is a test.";
如何仅删除单词“is”后的空格?(假设下一个字符串不同,所以我不能只写str.replace('is','is');因为单词“is”可能不在下一个字符串中)
我检查了,但它不接受任何其他参数,因此我不能告诉它仅替换空间的第n个实例。由于很容易获得空间的索引(当您迭代字符串时),您可以通过执行以下操作创建一个不带空格的新字符串:
str = str.substr(0, index)+ str.substr(index);
其中index
是要删除的空间的索引。您知道由于字数或字符数的原因要删除哪个空间吗
如果是char count,你可以用Rafaels Cardoso的答案
如果进行字数计算,则可以使用空格将其拆分,然后按需要合并:
var wordArray = str.split(" ");
var newStr = "";
wordIndex = 3; // or whatever you want
for (i; i<wordArray.length; i++) {
newStr+=wordArray[i];
if (i!=wordIndex) {
newStr+=' ';
}
}
var wordArray=str.split(“”);
var newStr=“”;
wordIndex=3;//或者你想要的任何东西
对于(i;i,如果您想通过空间的索引:
var str = 'Hello, this is a test.';
function replace(str, indexes){
return str.split(' ').reduce(function(prev, curr, i){
var separator = ~indexes.indexOf(i) ? '' : ' ';
return prev + separator + curr;
});
}
console.log(replace(str, [2,3]));
我为未知指数想出了这个方法
function removeNthSpace(str, n) {
var spacelessArray = str.split(' ');
return spacelessArray
.slice(0, n - 1) // left prefix part may be '', saves spaces
.concat([spacelessArray.slice(n - 1, n + 1).join('')]) // middle part: the one without the space
.concat(spacelessArray.slice(n + 1)).join(' '); // right part, saves spaces
}
我认为最好的方法是根据字符串中空格的位置将字符串拆分为数组,剪接不需要的空格,然后将数组重新合并为字符串
看看这个:
var x=“您好,这是一个测试。”;
var n=3;//我们要删除第三个空格
var arr=x.split(/([])/);//根据空间位置复制到数组
//arr:[“你好”,“这个”,“是”,“是”,“a”,“测试”]
arr.splice(n*2-1,1);//删除第三个空格
x=arr.join(“”);
alert(x);//“您好,这是isa测试。”
谢谢ziv,这是按字符数计算的,我刚刚看到您的答案,所以我选择了Cardoso的答案。谢谢您的帮助。非常感谢。