我在这里找到的很多解决方案都是在检查字符串是否为回文后给出 true 或 false。我有一个函数可以检查字符串是否是回文:
function palindrome(myString){
/* remove special characters, spaces and make lowercase*/
var removeChar = myString.replace(/[^A-Z0-9]/ig, "").toLowerCase();
/* reverse removeChar for comparison*/
var checkPalindrome = removeChar.split('').reverse().join('');
/* Check to see if myString is a Palindrome*/
if(removeChar === checkPalindrome){
document.write("<div>"+ myString + " is a Palindrome <div>");
}else{
document.write("<div>" + myString + " is not a Palindrome </div>");
}
}
palindrome("Oh who was it I saw, oh who?")
palindrome("Madam")
palindrome("Star Wars")
但这并不是我想要的。它只是检查字符串是否是回文。我想更新该函数,以便它识别句子中的所有回文,而不是给出 true 或 false。因此,如果有这样的句子 - “女士和约翰中午出去了”,它将列出该句子中的回文 - “女士,中午”
如有任何帮助,我们将不胜感激!
最佳答案
function findPalindromes(str, min) {
min = min || 3;
var result = [];
var reg = str.toLowerCase();
var reg = reg.replace(/[^a-z]/g, ''); // remove if you want spaces
var rev = reg.split("").reverse().join("");
var l = reg.length;
for (var i = 0; i < l; i++) {
for (var j = i + min; j <= l; j++) {
var regs = reg.substring(i, j);
var revs = rev.substring(l - j, l - i);
if (regs == revs) {
result.push(regs);
}
}
}
return result;
}
var str1 = "Madam and John went out at noon";
console.log(str1, findPalindromes(str1));
var str2 = "\"Amore, Roma\" and \"There's no 'x' in Nixon\" are palindromes.";
console.log(str2, findPalindromes(str2));
关于javascript - 识别句子中的回文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42015706/