确认字符串的结尾(可变结尾长度)

Confirm the Ending of an String (Varying Ending Length)

此任务要求您编写一个带有两个参数的函数。第一个参数是一个名为 str 的字符串,第二个参数是我们的目标结尾名为 target 的字符串。任务是验证 str 的结尾是否与目标结尾相同。说明指示使用 .substr() 方法将结尾与目标进行比较。我遇到的问题是 .substr 方法将有多个起点和长度参数,因为目标结尾可以是可变长度。看看我解决这个问题的尝试,请指引我走正确的道路。

function end(str, target) {
  var start = str.length - (target.length - 1);
  if(str.substr(start, str.length) == target){
     return true;
  } else {
     return false;
  }
}

end('Bastian', 'n');

编辑

正如@torazaburo 所说。正确答案是:

function end(str, target) {
    return target === str.substr(str.length - target.length);
}

因为字符串确实以空字符串结尾

原始答案

function end(str, target) {
    return target.length > 0 && target === str.substr(str.length - target.length);
}

http://jsfiddle.net/tqsx0gLa/2/

来自评论: 此代码使用 && 运算符设置逻辑比较。左侧 target.length > 0 应始终 return true 具有有效的 target 输入。左侧设置目标等于 substr,起始点为 str.lengthstr 最右侧的位置)并减去 target长度(到达我们子串的起点)。不需要结束点输入,因为子字符串将 运行 str.

的结尾
function end(str, target) {
  var start = str.length - target.length;

  if(str.substr(start) == target){
    return true;
  }
  else {
    return false;
  }
}

您也可以试试这个代码。

substring方法可以取负值从字符串末尾开始工作。您的问题的解决方案非常简单:

function end (str, target) {
  return str.substr(-target.length) === target;
}

end("simple is better", "better"); // returns true

// which is the same as writing
"simple is better".substr(-6) === "better" // true again

我觉得这很简单:

function end(str, target) {
  return str.substr(-target.length) == target;
}

我喜欢你原来的答案,它很干净而且很容易准备。 尝试删除第 2 行的 -1。这样它会 return 您的 substr 中的所有 target 单词。

    function end(str, target) {
  var start = str.length - (target.length);
  if(str.substr(start) == target){
     return true;
  } else {
     return false;
  }
}
end ("He has to give me a new name", "name")

当sub-string没有return第二个参数时,它会return从数字即开始到结束字符串。

function confirmEnding(str, target) {
   var position = str.length - target.length; //get start position for our .substr method.....

   if (str.substr(position, target.length == target){ // logical expression wich tell our method(.substr) from which position we need get information then we compare result with our "target" argument.
     return true;
    } else { return false; }

}

确认结束("Bastian","n"); // 真

这是一个简单的解决方案:

function confirmEnding(str, target) {

  var result;

  //getting the last string depend on target length 
  var last = str.substring(str.length - target.length);   

  //checking the last string with the target
  if(last === target){ 

     result = true;

  } else {

   result = false;
  }

return result;
}

我的解决方案使用 substr 方法,该方法获取目标的长度,并使用减号为我们提供第一个字符串的最后一个字符以供比较。

const confirmEnding = (str, target) => str.substr(-target.length) === target ? 
                                                                      true : 
                                                                      false;

给你:

const solution = (str, target) => str.endsWith(target);

最干净的方法。