JS:字符串,长度不为0,如何判断该字符串是否全为同一个字符,全部为同一个字符的示例:0,1,22,AAA。
1. 遍历字符串,逐个比较
for (let i=0;i < str.length;i++){ if (str[0] !== str[i]) { return false } }
2. 使用正则
const reg = /^(.)\1*$/ return reg.test(str)
都是大佬,我也贴一个自己的菜鸟写法吧。
function onlyOne(str){ let strLength = str.length; if(strLength === 1){ return true; } let tmpSet = new Set(str); if(tmpSet.size === 1){ return true; }else{ return false; } } console.log(onlyOne('0')); //true console.log(onlyOne('1')); //true console.log(onlyOne('22')); //true console.log(onlyOne('AAA')); //true console.log(onlyOne('AB')); //false
方法 onlyOne 判断字符串是否由同一个字符组成。参数为字符串 s
function onlyOne(s){ if (s.length==1) return true; else { s1.split(''); for (i=1;i<s1.length;i++) if (s[0] != s[1]) return false; return true; } }
直接用 set 去重,看是不是只剩一个就行
new Set(yourString).size === 1
const is_repeat_str = (str) => { return str === str.slice(0, 1).repeat(str.length); }; console.log( is_repeat_str('aaaa') ); // true console.log( is_repeat_str('abaa') ); // false
简洁明了,高性能,支持 Unicode 字符(上面评论中的代码都不支持这点),代码如下:
const isSame = s => { if (!s) return false const c0 = String.fromCodePoint(s.codePointAt(0)) for (let c of s) if (c !== c0) return false return true }
isSame("😁😁😁") // true isSame("aab") // false isSame("aaa") // true isSame("a") // true isSame("😁") // true isSame("") // false
new Set('aaa').size === 1
简单高效
console.time(1); for (let index = 0; index < 10000; index++) { let calcDistinctStr = (str) => { // 大师傅方法 最差,差数十倍 let result = false; result = ((s => { let pattern = new RegExp(s.substr(0, 1) + "+", "ig"); return 0 < s.match(pattern).length && s.match(pattern)[0].length == s.length; })(str)); return result; // 方法2 比方法3略差 // var res = true; // var start = str[0]; // for (let i = 0; i < str.length; i++) { // if (start !== str[i]) { // res = false // } // } // return res; // 方法3 最好 // return str === str.slice(0, 1).repeat(str.length); }; calcDistinctStr('11111111') } console.timeEnd(1);
其他未列出的方法也都差不多,大师傅最差。
测试方法:注销其他方法,只留一个方法,不断刷新页面,看输出。
1. 遍历字符串,逐个比较
2. 使用正则
都是大佬,我也贴一个自己的菜鸟写法吧。
方法 onlyOne 判断字符串是否由同一个字符组成。参数为字符串 s
直接用 set 去重,看是不是只剩一个就行
简洁明了,高性能,支持 Unicode 字符(上面评论中的代码都不支持这点),代码如下:
简单高效
其他未列出的方法也都差不多,大师傅最差。
测试方法:注销其他方法,只留一个方法,不断刷新页面,看输出。