此任务要求您编写一个带有两个参数的函数。第一个参数是一个名为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');
答案 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
。左侧通过取substr
(str.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())
));