问题描述
作为一种实践,我正在解决 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
。