删除带有拼接错误的元素

问题描述

作为一种实践,我正在解决 Codewars 中的问题。 我有一个问题,如果一个字符包含在一个字符串中,它要求删除一个字符。在我的情况下,字符是“!”。 我的代码是:

function removeExclamationMarks(s) {
  let mark = '!';
  console.log(s);
  let removeElement = s.indexOf(mark);
  console.log(removeElement)
  let getRid = s.splice(removeElement,1)
  return getRid;
}
console.log(removeExclamationMarks('Hello!'))

一切直到让 getRid = s.splice(removeElement,1) 工作。 我的工作流程如下

  • 我在变量中设置了我要查找的元素
  • 检查字符串
  • 我找到标记出现在字符串中的位置
  • 我查看号码
  • 我进行拼接 - 这会破坏代码

有什么建议吗?

解决方法

您首先需要检查它存在的位置,然后才执行拼接操作。

function removeExclamationMarks(s) {
  let mark = '!';
  return s.replaceAll(mark,'');
}
console.log(removeExclamationMarks('Hello!'))
,

该方法仅在 OP 情况下有效,例如使用 String.replace 很好。

function removeExclamationMarks(s) {
  let mark = '!';
  let removeElement = s.indexOf(mark);
  if (removeElement > -1) {
    s.splice(removeElement,1)
  }
  return s.join('');
}
console.log(removeExclamationMarks('Hello!'.split('')));

我做了什么?

  • split 字符串到数组中
  • 使用 indexOf 检查标记的索引,然后检查是否不是 -1(不存在)
  • splice 元素并返回数组的 join('') 版本

String.replace 示例

console.log('Hello!'.replace('!',''));

,

如果您在字符串数据类型上使用 splice 那么它是错误的,我看不出您的代码有任何问题,除了缺少一行,即,首先将您的字符串转换为数组,如下所示:

make

然后对这个 const strArr = [...s]; 使用 splice,您的代码将正常工作。

注意:如果您想返回更新的字符串,请将返回值更改为 strArr