首页 文章

在JavaScript中从字符串中删除第(n)个空格

提问于
浏览
1

我试图从一些动态生成的字符串中删除一些空格 . 我删除的空间取决于字符串的长度 . 字符串一直在变化,所以为了知道有多少空格,我迭代字符串并在每次迭代遇到空格时递增一个变量 . 我已经可以使用 str.replace(' ',''); 删除所有特定类型的字符,其中'str'是我的字符串的名称,但我只需要删除特定的空格,而不是所有空格 . 所以我要说我的字符串是

var str = "Hello, this is a test.";

如何在“是”之后删除空格? (假设下一个字符串不同,所以我不能只写str.replace('is','is');因为单词“is”可能不在下一个字符串中) .

我检查了documentation on .replace,但它没有接受其他参数,所以我不能告诉它只是替换空格的第n个实例 .

5 回答

  • 0

    如果你想通过空格的索引:

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

    http://jsfiddle.net/96Lvpcew/1/

  • 0

    因为您很容易获得空间的索引(当您在字符串上进行迭代时),您可以通过执行以下操作来创建一个没有空格的新字符串:

    str = str.substr(0, index)+ str.substr(index);
    

    其中 index 是要删除的空间的索引 .

  • 0

    我想出了这个未知指数

    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
    }
    
  • 0

    您是否知道由于字数或字符数而要删除哪个空格?

    如果计算炭数,你可以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+=' ';
       }
    }
    
  • 0

    我认为最好的办法是根据字符串中空格的位置将字符串拆分为数组,拼接出您不想要的空格,然后将数组重新加入字符串中 .

    看一下这个:

    var x = "Hello, this is a test.";
    var n = 3; // we want to remove the third space
    var arr = x.split(/([ ])/); // copy to an array based on space placement
    // arr: ["Hello,"," ","this"," ","is"," ","a"," ","test."]
    arr.splice(n*2-1,1); // Remove the third space
    x = arr.join("");
    alert(x); // "Hello, this isa test."
    

    Further Notes

    首先要注意的是 str.replace(' ',''); 实际上只会替换空格字符的第一个实例 . String.replace() 也接受正则表达式作为第一个参数,您将要用于更复杂的替换 .

    要实际替换字符串中的所有空格,您可以执行 str.replace(/ /g,""); 并替换所有空格(包括空格,制表符和换行符),您可以执行 str.replace(/\s/g,"");

    为了摆弄不同的正则表达式并查看它们的含义,我建议使用http://www.regexr.com

    JavaScript String 对象上的许多函数似乎都将字符串作为参数,也可以使用正则表达式,包括 .split().search() .

相关问题