本文概述
如果我们从头到尾阅读字符串, 则该字符串就是回文, 它与begin到末尾相同。在编程中检测单词是否回文的逻辑非常简单, 你需要从字符串中删除特殊字符并反转结果。如果字符串相等(过滤后的字符串和反向的过滤后的字符串), 那么该字符串就是回文, 很容易吧?在本文中, 我们将向你展示如何通过JavaScript函数轻松遵循上述逻辑。
验证基本功能
按照上述逻辑, 我们将简单地创建一个包含所需字符串的变量。首先, 我们将字符串的所有字符转换为小写版本, 然后删除特殊字符, 最后比较字符串, 如果它们相等, 则函数将返回一个布尔值来确认:
/**
* A function that verifies wether the given string is Palindrome or not.
*
* @returns {Boolean}
*/
function isPalindrome(str){
var normalized = str.toLowerCase().match(/[a-z]/gi).reverse();
return normalized.join('') === normalized.reverse().join('');
}
因此, 你可以将提供字符串作为第一个参数的isPalindrome方法进行强制转换, 这将返回一个布尔值, 该布尔值将通知是否存在:
if(isPalindrome("Go dog.")){
console.log("Is Palindrome");
}else{
console.log("It's not Palindrome");
}
用原型功能验证
如果你愿意在不提供字符串作为任何函数的第一个参数的情况下测试字符串是否为回文式, 只要变量是字符串, 就可以通过创建String原型并为其创建自己的函数来创建快捷方式。这样, 你可以调用isPalindrome方法, 就好像它是字符串的属性一样, 例如:
/**
* An extension function for strings that allows you to verify
* wether the string is Palindrome or not.
*
* @returns {Boolean}
*/
String.prototype.isPalindrome = function () {
var normalized = this.toLowerCase().match(/[a-z]/gi).reverse();
return normalized.join('') === normalized.reverse().join('');
}
因此, 你可以将isPalindrome方法强制转换为字符串, 这将返回一个布尔值, 该布尔值会通知是否存在:
if("Go dog.".isPalindrome()){
console.log("Is Palindrome");
}else{
console.log("It's not Palindrome");
}
进一步的例子:
// True
"A Toyota! Race fast, safe car! A Toyota!".isPalindrome()
// True
"A car, a man, a maraca.".isPalindrome()
// True
"Eye".isPalindrome()
// False
"Never even or odd".isPalindrome()
编码愉快!
评论前必须登录!
注册