替换非字母数字字符以使用 javascript 检查回文
Replace non alphanumeric characters to check palindrome using javascript
function palindrome(str) {
var strReverse=str.toLowerCase().replace(/'W+/g,'').split('').reverse().join('');
if(strReverse===str)
return true;
else
return false;
}
该程序应检查以下回文:
palindrome("eye") should return true.
palindrome("race car") should return true.
palindrome("not a palindrome") should return false.
palindrome("A man, a plan, a canal. Panama") should return true.
palindrome("never odd or even") should return true.
palindrome("nope") should return false.
palindrome("almostomla") should return false.
palindrome("My age is 0, 0 si ega ym.") should return true.
palindrome("1 eye for of 1 eye.") should return false.
palindrome("0_0 (: /-' :) 0-0") should return true.
但它不适用于多弦线。我认为这是因为RegEx
但我似乎找不到到底出了什么问题。
您在创建strReverse
时使用toLowerCase
,然后将其与str
进行比较。但是str
仍然会有大写字符。此外,您将非字母字符保留在 str
中。
您还需要删除_
才能使最后一个正常工作,'W
不会自行执行此操作。
您需要首先准备str
,然后创建它的反向版本,并执行检查:
function palindrome(str) {
var strReverse;
str = str.toLowerCase().replace(/'W|_+/g,'');
strReverse = str.split('').reverse().join('');
return strReverse === str;
}
现场示例:
function palindrome(str) {
var strReverse;
str = str.toLowerCase().replace(/'W|_+/g,'');
strReverse = str.split('').reverse().join('');
return strReverse === str;
}
function test(str, expectedResult) {
var result = palindrome(str);
var p = document.createElement('p');
p.className = !result == !expectedResult ? "good" : "bad";
p.appendChild(document.createTextNode(str));
document.body.appendChild(p);
}
test("eye", true);
test("race car", true);
test("not a palindrome", false);
test("A man, a plan, a canal. Panama", true);
test("never odd or even", true);
test("nope", false);
test("almostomla", false);
test("My age is 0, 0 si ega ym.", true);
test("1 eye for of 1 eye.", false);
test("0_0 (: /-' :) 0-0", true);
.good {
color: green;
}
.bad {
color: #d00;
}
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="//tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
试试这个函数
function palindrome(str) {
str=str.toLowerCase().replace(/[^A-Za-z]+/g, '');
var strReverse = str.split('').reverse().join('');
if(strReverse===str)
return true;
else
return false;
}
代码中的问题是,当您将strReverse
与str
进行比较时,strReverse
被格式化了,但str
没有。就像您没有从str中删除特殊字符,空格和数字一样,您没有将其lowercase
等。
检查每个测试用例的此小提琴
相关文章:
- 使用javascript检查多个输入值,并在1次检查中标记多个输入框
- JavaScript 检查隐藏字段中的值并将其设置为隐藏字段值
- 如何使用javascript检查移动sd卡中是否存在文件
- 使用javascript检查服务器上是否存在html文件
- javascript检查对象存在
- 如何使用Javascript检查当前鼠标按钮状态
- Javascript检查图像是否在数组中
- JavaScript检查某些文本中的许多关键字
- 如何使用JavaScript检查HTML表中插入的值的类型
- Javascript检查参数是否为零值
- Javascript检查表单的当前数据是否等于其原始数据
- JavaScript:检查变量是否等于两个或多个值之一的简单方法
- 使用JavaScript检查用户名是否已存在于SQLite中
- 如何使用javascript检查事件是否应用于元素
- Javascript-检查是否设置了cookie
- 使用 javascript 检查文本框是否以 92 开头
- 使用 Javascript 检查文本区域值是否为数字
- 使用 javascript 检查元素是否包含子标记而不是文本
- Javascript 检查范围是否重叠
- JavaScript - 检查 JSON 中是否有特定键可用