我有以下内容:
var S="hi how are you";
var bindex = 2;
var eindex = 6;
如何删除位于bindex和eindex之间的S中的所有字符?
因此S将是“你好吗”
答案 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)
你可以:
重建字符串
var new_s = S.slice(1,bindex)+ S.slice(bindex,eindex).replace(/ \ s / g,'')+ S.slice(eindex)
答案 6 :(得分:0)
尽管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)
);