如何在javascript字符串中删除索引之间的字符

时间:2011-03-07 08:46:26

标签: javascript

我有以下内容:

var S="hi how are you";
var bindex = 2;
var eindex = 6;

如何删除位于bindex和eindex之间的S中的所有字符?
因此S将是“你好吗”

10 个答案:

答案 0 :(得分:31)

在bindex之前获取文本,并在eindex之后与文本连接,如:

var S="hi how are you"; 
var bindex = 2; var eindex = 6; 
S = S.substr(0, bindex) + S.substr(eindex);

S现在是“你好吗”

答案 1 :(得分:14)

首先找到要替换的字符串的子字符串,然后用空字符串替换该字符串的第一个匹配项。

S = S.replace(S.substring(bindex, eindex), "");

另一种方法是将字符串转换为数组,splice将不需要的部分转换出来并再次转换为字符串。

var result = S.split('');
result.splice(bindex, eindex - bindex);
S = result.join('');

答案 2 :(得分:8)

尝试

S = S.substring(0, bindex)+S.substring(eindex);

答案 3 :(得分:4)

使用String.slice

S = S.slice(0, bindex) + S.slice(eindex);

答案 4 :(得分:1)

S.split(S.substring(bindex,eindex))。join(“”);

答案 5 :(得分:0)

你可以:

  1. 从bindex和eindex获取子字符串
  2. 从该字符串中删除空格
  3. 重建字符串

    var new_s = S.slice(1,bindex)+ S.slice(bindex,eindex).replace(/ \ s / g,'')+ S.slice(eindex)

答案 6 :(得分:0)

请勿使用片;尝试SPLICE

尽管slice很好,但它的设计类似于substring,但它的目的是获取东西,而不是去除东西。

注意事项:拼接是为数组编写的。

好消息:字符串很容易变成数组。

String.prototype.splice = function(start, deleteCount) {
  const newStringArray = this.split('')
  newStringArray.splice(start, deleteCount)
  return newStringArray.join('')
}

'Hello World'.splice(2, 5)
// Output -> "Heorld"

答案 7 :(得分:0)

不需要创建任何中间数组或字符串的解决方案是使用.replace <捕获>捕获组中的第一个字符,匹配要删除的字符,然后替换第一个被捕获的组:

// keep first 3 characters, remove next 4 characters
const s = "hi how are you";
console.log(
  s.replace(/(.{3}).{4}/, '$1')
);

答案 8 :(得分:0)

以下函数返回slice函数的互补结果:

 String.prototype.remainderOfSlice = function(begin, end) {

    begin = begin || 0
    end = (end === undefined) ? this.length : end 

    if (this.slice(begin, end) === '') return this + ''
    return this.slice(0, begin) + this.slice(end) 
 }

示例:

 "hi how are you".slice(2, 6) // " how"
 "hi how are you".remainderOfSlice(2, 6) // "hi are you"

 "hi how are you".slice(-2, 6) // ""
 "hi how are you".remainderOfSlice(-2, 6) // "hi how are you"

答案 9 :(得分:0)

是否要一次删除一个字符串中的多个范围?这可能很棘手,因为在切出字符串时,索引会改变,但是根据您的要求,这可能会起作用:

function deleteRangesInString(ranges, string, deleteChar = "▮") {
    ranges.forEach(r => {
        string = string.substring(0, r[0]) + deleteChar.repeat((r[1]-r[0])+1) + string.substring(r[1]+1);
    })
    return string.replace(new RegExp(deleteChar, 'g'), '');
}

var s = 'hi how are you, look at me now, look at me now';

console.log(
deleteRangesInString([[2,9],[14,29]], s)
);