在 ECMAScript 2017 中,新增了两个字符串方法:String.prototype.prefix
和 String.prototype.suffix
。这两个方法可以用来判断一个字符串是否以指定的前缀或后缀开头或结尾。
String.prefix
String.prototype.prefix
方法用于判断一个字符串是否以指定的前缀开头。该方法接受一个字符串作为参数,如果该字符串是调用该方法的字符串的前缀,则返回 true,否则返回 false。
示例代码:
let str = 'Hello, world!'; console.log(str.prefix('Hello')); // true console.log(str.prefix('hello')); // false
上述代码中,str.prefix('Hello')
返回 true,因为字符串 str
以 Hello
开头。而 str.prefix('hello')
返回 false,因为字符串 str
的开头是大写的 H
,而参数中的 hello
是小写的。
String.suffix
String.prototype.suffix
方法用于判断一个字符串是否以指定的后缀结尾。该方法接受一个字符串作为参数,如果该字符串是调用该方法的字符串的后缀,则返回 true,否则返回 false。
示例代码:
let str = 'Hello, world!'; console.log(str.suffix('world!')); // true console.log(str.suffix('World!')); // false
上述代码中,str.suffix('world!')
返回 true,因为字符串 str
以 world!
结尾。而 str.suffix('World!')
返回 false,因为字符串 str
的结尾是小写的 d
,而参数中的 World!
是大写的。
指导意义
String.prototype.prefix
和 String.prototype.suffix
方法的出现,可以使开发者更方便地判断一个字符串是否以指定的前缀或后缀开头或结尾。在实际开发中,我们经常需要对字符串进行一些处理,这两个方法可以帮助我们更快地实现这些操作。
例如,我们可以使用 String.prototype.prefix
方法来判断一个 URL 是否以指定的协议头开头:
function isHttpUrl(url) { return url.prefix('http://') || url.prefix('https://'); } console.log(isHttpUrl('http://www.example.com')); // true console.log(isHttpUrl('https://www.example.com')); // true console.log(isHttpUrl('ftp://www.example.com')); // false
上述代码中,isHttpUrl
函数使用了 String.prototype.prefix
方法来判断一个 URL 是否以 http://
或 https://
开头。如果是,则返回 true,否则返回 false。
类似地,我们也可以使用 String.prototype.suffix
方法来判断一个文件名是否以指定的扩展名结尾:
function isImageFile(filename) { return filename.suffix('.jpg') || filename.suffix('.png') || filename.suffix('.gif'); } console.log(isImageFile('image.jpg')); // true console.log(isImageFile('image.png')); // true console.log(isImageFile('image.gif')); // true console.log(isImageFile('image.jpeg')); // false
上述代码中,isImageFile
函数使用了 String.prototype.suffix
方法来判断一个文件名是否以 .jpg
、.png
或 .gif
结尾。如果是,则返回 true,否则返回 false。
总结
String.prototype.prefix
和 String.prototype.suffix
是 ECMAScript 2017 中新增的字符串方法,可以用来判断一个字符串是否以指定的前缀或后缀开头或结尾。在实际开发中,我们可以使用这两个方法来更方便地实现一些字符串操作。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65f8ec1ad10417a2224a08ae