这是今天做练习的时候碰到的。
有两种办法:一是先将要处理的字符串分割成数组,再用filter滤去数组中的标点和空格(filter对于回调函数返回true的项会保留在数组中,返回false的会被滤出数组),最后再把数组转成字符串。下面是实现方法:
function palindrome(str) {
var arr = str.split("");
arr = arr.filter(function(val) {
return (val !== " " && val !== "," && val !== "." && val !== "?" && val !== ":" && val !== ";" && val !== "`" && val !== "'" && val !== "_" && val !== "/" && val !== "-" && val !== "\\" && val !== "" && val !== "\(" && val !== "\)");
});
console.log(arr.join(""));//arr变为"0000";
}
palindrome("0_0 (: /-\ :) 0-0");
还有一个是通过replace()用正则表达式选中字符串中的所有标点和空格,再将它们替换剔除掉。实现方法如下:
function palindrome(str) {
var arr = str.replace(/[\ |\~|\`|\!|\@|\#|\$|\%|\^|\&|\*|\(|\)|\-|\_|\+|\=|\||\\|\[|\]|\{|\}|\;|\:|\"|\'|\,|\<|\.|\>|\/|\?]/g,"");
console.log(arr);//"0000"
palindrome("0_0 (: /-\ :) 0-0");
}
这两种方法的不足就是不能囊括所有的标点符号,只能手动检验添加,才能实现期望效果。