确认字符串的结束(变化的结束长度)

时间:2015-06-28 01:55:22

标签: javascript string substring

此任务要求您编写一个带有两个参数的函数。第一个参数是一个名为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');

8 个答案:

答案 0 :(得分:6)

修改

正如@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应始终返回true,并输入有效的target。左侧通过取substrstr.length最右侧的位置)并减去str,从定位点开始设置等于target的目标length(到达我们子串的起点)。不需要端点输入,因为子字符串将运行到str的末尾。

答案 1 :(得分:1)

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

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;
}

答案 2 :(得分:0)

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

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

您也可以尝试使用此代码。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

我觉得这很简单:

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

答案 5 :(得分:0)

我喜欢你的原始答案,它很干净,易于准备。 尝试删除第2行的-1。这样它将返回 substr 中的所有目标字。

    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")

当子字符串没有返回第二个参数时,它将从 start 的数字返回到字符串的结尾。

答案 6 :(得分:0)

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; }

}

confirmEnding(“Bastian”,“n”); // true

答案 7 :(得分:0)

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

Function< Map<String, Integer>,Integer> sumOfValue = (x) ->   x.values().stream().mapToInt(Integer::intValue).sum(); 
stringMapMap.entrySet().stream().collect(Collectors.toMap(
            e-> e.getKey(), e-> sumOfValue.apply(e.getValue())
    ));