目标:
检查字符串(第一个参数,str)是否以给定的目标字符串(第二个参数,target)结尾。可以使用.endsWith()方法解决此挑战,但我不想使用它。
可行的解决方案:
function confirmEnding(str, target) {
return str.slice(str.length - target.length) === target
}
console.log(confirmEnding("Open sesame", "game")); // false
上面是“解决方案”。看到它多么简单之后,我感到沮丧!
但是,尽管我的代码很复杂,但我仍然希望它能解决。
下面是我的代码:
function confirmEnding(str, target){
let newStr = str.split('').reverse()
let newTarget = target.split('').reverse()
function matching (newStr, newTarget){
for (let i = 0; i < newTarget.length ; i++){
return (newTarget[i] === newStr[i]) ? true : false
}
}
}
console.log(confirmEnding("Open sesame", "game"))
它打印true
,但我希望它是false
。
答案 0 :(得分:1)
这是您的代码存在的问题:
false
true
function confirmEnding(str, target){
let newStr = str.split('').reverse()
let newTarget = target.split('').reverse()
for (let i = 0; i < newTarget.length ; i++) {
if (newTarget[i] !== newStr[i]) {
return false;
}
}
return true;
}
console.log(confirmEnding("Open sesame", "game"))
console.log(confirmEnding("Open sesame", "same"))
解决问题的更有效方法是使用正则表达式:
function confirmEnding(str, target) {
return new RegExp(`${target}$`).test(str);
}
console.log(confirmEnding("Open sesame", "game"))
console.log(confirmEnding("Open sesame", "same"))
答案 1 :(得分:0)
可以使用正则表达式吗?如果您知道结尾的样子,则可以将regex与indexOf一起使用以进行验证。假设您使用的是JavaScript
答案 2 :(得分:0)
尝试一下。我在这里使用的代码对我来说更直观。
function confirmEnding(str, target) {
let result = str.slice(-target.length);
if (result === target) {
return true} else {
return false}
}