[英]Remove (n)th space from string in JavaScript
我试图从一些动态生成的字符串中删除一些空格。 我要删除的空格取决于字符串的长度。 字符串一直在变化,因此为了知道有多少空格,我对字符串进行迭代,并在每次迭代遇到空格时增加一个变量。 我已经可以使用str.replace(' ','');
删除所有特定类型的字符str.replace(' ','');
其中'str'是我的字符串的名称,但是我只需要删除特定位置的空格,而不是所有空格。 假设我的字符串是
var str = "Hello, this is a test.";
如何仅删除“是”一词后的空格? (假设下一个字符串会有所不同,因此我不能只写str.replace('is','is');因为下一个字符串中可能没有单词“ is”)。
我检查了有关.replace的文档 ,但没有接受其他参数,因此我不能告诉它仅替换空格的第n个实例。
由于很容易获得空间的索引(当您遍历字符串时),因此可以通过执行以下操作来创建不带空格的新字符串:
str = str.substr(0, index)+ str.substr(index);
其中index
是要删除的空间的索引。
您是否知道由于字数或字符数而要删除的空间?
如果算是字符,您可以通过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 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 = "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
JavaScript String
对象上的许多似乎将字符串作为参数的函数也可以采用正则表达式,包括.split()
和.search()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.