在 ES9 新特性中,JavaScript 新增了两个实例方法:String.prototype.endsWith() 和 String.prototype.startsWith()。这两个方法可以非常方便地帮助我们判断一个字符串是否以某个子串作为结尾或者开头。在前端开发中,这两个方法非常实用,我们来详细了解一下它们的使用方法。
String.prototype.endsWith()
String.prototype.endsWith() 方法用于判断当前字符串是否以指定的子串结尾。它接受一到两个参数,其中第一个参数是要匹配的子串,第二个参数是可选的,表示匹配的结束位置,默认值是字符串的长度。
示例代码:
const str = 'hello world'; console.log(str.endsWith('world')); // true console.log(str.endsWith('world', 9)); // true console.log(str.endsWith('world', 8)); // false
以上代码中,第一个 console.log() 语句返回 true,因为字符串 str 以子串 'world' 结尾;第二个 console.log() 语句中传入的第二个参数是 9,即从字符串的第 9 个字符开始匹配,因此同样返回 true;第三个 console.log() 语句的第二个参数是 8,即从字符串的第 8 个字符开始匹配,无法匹配到 'world',因此返回 false。
String.prototype.startsWith()
String.prototype.startsWith() 方法用于判断当前字符串是否以指定的子串开头。它同样接受一到两个参数,第一个参数是要匹配的子串,第二个参数是可选的,表示匹配的开始位置,默认值是 0。
示例代码:
const str = 'hello world'; console.log(str.startsWith('hello')); // true console.log(str.startsWith('hello', 1)); // false console.log(str.startsWith('world', 6)); // true
以上代码中,第一个 console.log() 语句返回 true,因为字符串 str 以子串 'hello' 开头;第二个 console.log() 语句中传入的第二个参数是 1,即从字符串的第 2 个字符开始匹配,无法匹配到 'hello',因此返回 false;第三个 console.log() 语句的第二个参数是 6,即从字符串的第 7 个字符开始匹配,因此返回 true。
总结
String.prototype.endsWith() 和 String.prototype.startsWith() 这两个方法非常实用,它们可以在某些场景下替代 indexOf() 方法的使用,使代码更加简洁和易读。但需要注意的是,这两个方法在 ES6 中已经被加入,因此需要在项目中充分考虑浏览器的兼容性。在 ES6 以下版本的浏览器中可能需要使用 polyfill 来填充这两个方法的缺失。
参考资料
- String.prototype.endsWith() - JavaScript | MDN, https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith
- String.prototype.startsWith() - JavaScript | MDN, https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/648361f248841e98942d2ec8