2015-05-06 47 views
1

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

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

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

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

回答

0

因为它很容易让你得到了空间的指数(如您遍历字符串),您可以通过创建一个没有空间的新字符串:

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

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

0

你知道你想删除哪个空间吗?因为字数或字符数?

如果字符数,你可以Rafaels卡多佐的回答,

如果字数您可以用空格分开他们,但是你一起想:

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+=' '; 
    } 
} 
+1

感谢ZIV,它是由字符计数和我刚才还看见你的答案,所以我选择了卡多佐的答案。非常感谢您的帮助。欣赏它。 –

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

我想出了这个函或未知指数

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

我认为最好的办法是分割字符串分解成的字符串中的空格放置一个数组,拼接关闭你不想要的空间,以及阵列重新加入到一个字符串。

检查了这一点:

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."

其它注意事项

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

要真正取代所有空格字符串中,你可以做str.replace(/ /g,"");并取代所有空格(包括空格,制表符和新行),你可以做str.replace(/\s/g,"");

要摆弄不同的正则表达式,看看是什么他们的意思是,我建议使用http://www.regexr.com

很多,似乎把字符串作为参数,也可以采取正则表达式,包括.split().search() JavaScript的String对象上的功能。