飞道的博客

在JavaScript中确认字符串结尾的两种方法(文末放置微信小程序抽奖活动)

281人阅读  评论(0)

在这里中,我将解释如何解决freeCodeCamp的“挑战。这涉及检查字符串是否以特定的字符序列结尾。”

我将介绍两种方法:

  1. 使用substr()方法
  2. 使用endWith()方法

算法挑战说明

检查字符串(第一个参数str)是否以给定的目标字符串(第二个参数)结尾的目标。

可以通过.endsWith()ES2015中约会的方法解决此挑战。但出于此挑战的目的,我们希望你改用一种JavaScript子字符串方法。

function confirmEnding(string, target) {
   
  return string;
}
confirmEnding("Bastian", "n");

提供的测试用例

confirmEnding("Bastian", "n") should return true.

confirmEnding("Connor", "n") should return false.

confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification") should return false.

largestOfFour([[4, 9, 1, 3], [13, 35, 18, 26], [32, 35, 97, 39], [1000000, 1001, 857, 1]]) should return [9, 35, 97, 1000000].

confirmEnding("He has to give me a new name", "name")should return true.
confirmEnding("Open sesame", "same") should return true.

confirmEnding("Open sesame", "pen") should return false.

confirmEnding("If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing", "mountain") should return false.

Do not use the built-in method .endsWith() to solve the challenge.

方法1:使用内置函数(substr())确认字符串的结尾

对于此解决方案,你将使用String.prototype.substr()方法:

  • 该substr()方法以指定的字符数返回从指定位置开始的字符串中的字符。

你为什么用string.substr(-target.length)?

如果target.length为负,则substr()方法重置字符串的末尾开始计数,这是你在此代码挑战中想要的。

你不想使用string.substr(-1)该字符串的最后一个元素,因为如果目标的长度超过一个字母:

confirmEnding("Open sesame", "same")

……目标根本不会返回。

因此,这里string.substr(-target.length)将获得字符串“ Bastian”的最后一个索引“ n”。

然后检查是否string.substr(-target.length)等于目标(是或否)。

function confirmEnding(string, target) {
   
  // Step 1. Use the substr method
  if (string.substr(-target.length) === target) {
   
  
  // What does "if (string.substr(-target.length) === target)" represents?
  // The string is 'Bastian' and the target is 'n' 
  // target.length = 1 so -target.length = -1
  // if ('Bastian'.substr(-1) === 'n')
  // if ('n' === 'n')
  
  // Step 2. Return a boolean (true or false)
    return true;
  } else {
   
    return false;
  }
}

confirmEnding('Bastian', 'n');

没有注释:

function confirmEnding(string, target) {
   
  if (string.substr(-target.length) === target) {
   
    return true;
  } else {
   
    return false;
  }
}
confirmEnding('Bastian', 'n');

你可以将三元运算符利用if语句的快捷方式:

(string.substr(-target.length) === target) ? true : false;

可以理解为:

if (string.substr(-target.length) === target) {
   
    return true;
} else {
   
    return false;
}

然后,你可以在函数中返回三元运算符:

function confirmEnding(string, target) {
   
  return (string.substr(-target.length) === target) ? true : false;
}
confirmEnding('Bastian', 'n');

你还可以通过返回条件来重构代码,简化更简洁:

function confirmEnding(string, target) {
   
  return string.substr(-target.length) === target;
}
confirmEnding('Bastian', 'n');

方法2:使用内置函数确认字符串的结尾—使用ends()

对于此解决方案,你将使用String.prototype.endsWith()方法:

  • 该endsWith()方法确定一个字符串是否以另一个字符串的字符串结尾,返回true还是false适当的。此方法区分大小写。
function confirmEnding(string, target) {
   
  // We return the method with the target as a parameter
  // The result will be a boolean (true/false)
  return string.endsWith(target); // 'Bastian'.endsWith('n')
}
confirmEnding('Bastian', 'n');


关注:Hunter网络安全 获取更多资讯
网站:bbs.kylzrv.com
CTF团队:Hunter网络安全
文章:Sonya Moisset
排版:Hunter-匿名者


转载:https://blog.csdn.net/qq_25879801/article/details/111597365
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场