从字符串中删除字符并返回带有已删除字符的新字符串

时间:2018-11-24 16:56:24

标签: javascript

我正在尝试从字符串中删除一些字符并返回删除的字符。这是我的代码...

function removeFromString(string, start, charToRemove){
  var newString = ''
  newString = string.slice(start, charToRemove);
  return newString
}

alert(removeFromString ('Hello', 0, 3)) //lo

我想出了如何返回其余字符,但我想不出如何返回被删除的字符。

提前谢谢!

7 个答案:

答案 0 :(得分:2)

您可以将字符串转换为数组,使用splice方法拆分未使用的项,然后将数组中的结果项连接到字符串。

var arr = Array.from('Hello');

var items = arr.splice(3, arr.length);

var result = items.join('');

console.log(result);

答案 1 :(得分:2)

您可以映射角色并删除给定范围内的角色。

function removeFromString(string, start, charToRemove) {
    return Array.from(
        string,
        (c, i) => i >= start && i < start + charToRemove ? '': c
    ).join('');
}

console.log(removeFromString ('Hello', 0, 3)) //lo

答案 2 :(得分:2)

我修改了自己的代码以返回其余字符:

function removeFromString(string, start, charToRemove){
  var newString = '';
  newString = string.slice(0, start) + string.slice(start+charToRemove);
  return newString;
}

console.log(removeFromString ('Hello', 0, 3)) //lo

答案 3 :(得分:1)

string.slice(start, charToRemove)将返回一个新的字符串值,该字符串值是通过将变量string内的字符串值中的所有字符从索引start到索引charToRemove <创建的/ p>

现在通过您的示例调用,string变量内的字符串值为:

H e l l o
0 1 2 3 4

,您提供的start索引为0,而charToRemove为3,因此我们得到了一个新的字符串值,其中包含索引0、1和2处的字符,即Hel

如果您希望所有内容都从索引3开始,则需要给3作为slice方法的偏移量,即

'Hello'.slice(3)

不过,我不确定您的目标到底是什么。如果要获取字符串中的最后n个字符,可以使用string.slice(-2)之类的负偏移量。

答案 4 :(得分:1)

您可以使用子字符串来获取要删除的部分,并将其替换为空字符串。 这样,我们就不需要循环,也不需要将字符串转换为数组。

function removeFromString(str, start, charToRemove){
  let end = start+charToRemove
  let strToBeRemoved = str.substring(start, end)
  return str.replace(strToBeRemoved, "")
}


console.log(removeFromString ('Hello', 0, 3)) //lo
console.log(removeFromString ('Hello', 2, 2)) //Heo
console.log(removeFromString ('Hello', 1, 3)) //Ho

答案 5 :(得分:0)

只需让您的函数返回以下内容即可:string.substr(0,start)+ string.substr(charToRemove + 1)

答案 6 :(得分:0)

这是一个“多切片”函数,该函数在特定位置切割字符串并返回切片数组。例如,segment(hello, 0, 3)返回[hel, lo]

function segment(str, ...positions) {
  let last = 0, res = []
  
  for (let pos of positions) {
    res.push(str.slice(last, pos))
    last = pos
  }
  
  if (last < str.length)
    res.push(str.slice(last))
  
  return res
    
}

console.log(segment('Hello', 0, 3))