正則表示式(二)常用正則表示式——獲取出現次數最多的字母
阿新 • • 發佈:2020-12-29
方法一: 去重
let str = "adddddddddddddddsaaaaaaaaaaaaaaasbdfgyhiujdnbfhyigehjnfbsh"; let obj = {}; [].forEach.call(str, char => { if (typeof obj[char] !== "undefined") { obj[char]++; return; } obj[char] = 1; }); let max = 1, res = []; for (let key in obj) { let item = obj[key]; item > max ? max = item : null; } for (let key in obj) { let item = obj[key]; if (item === max) { res.push(key); } } console.log(`出現次數最多的字元是:${res},出現了${max}次`);
方法二:排序
let str = "adddddddddddddddsaaaaaaaaaaaaaaasbdfgyhiujdnbfhyigehjnfbsh"; str = str.split('').sort((a, b) => a.localeCompare(b)).join(''); // console.log(str);//=>"aeefghhhiilnnoopsuuuxzz" let reg = /([a-zA-Z])\1+/g; let ary = str.match(reg); // console.log(ary); //=>["ee", "hhh", "ii", "nn", "oo", "uuu", "zz"] ary.sort((a, b) => b.length - a.length); // console.log(ary); //=>["hhh", "uuu", "ee", "ii", "nn", "oo", "zz"] let max = ary[0].length, res = [ary[0].substr(0, 1)]; for (let i = 1; i < ary.length; i++) { let item = ary[i]; if (item.length < max) { break; } res.push(item.substr(0, 1)); } console.log(`出現次數最多的字元是:${res},出現了${max}次`);
方法三:遍歷查詢
let str = "adddddddddddddddsaaaaaaaaaaaaaaasbdfgyhiujdnbfhyigehjnfbsh", max = 0, res = [], flag = false; str = str.split('').sort((a, b) => a.localeCompare(b)).join(''); for (let i = str.length; i > 0; i--) { let reg = new RegExp("([a-zA-Z])\\1{" + (i - 1) + "}", "g"); str.replace(reg, (content, $1) => { res.push($1); max = i; flag = true; }); if (flag) break; } console.log(`出現次數最多的字元:${res},出現了${max}次`);
方法四:遍歷查詢
let str = 'adddddddddddddddsaaaaaaaaaaaaaaasbdfgyhiujdnbfhyigehjnfbsh' // 待檢測字串
let max = 0 //最大次數
let result = [] // 結果集
let letter // 出現次數最多的字母
let reg //正則表示式
while (str.length > 0) {
oldLength = str.length // 老長度
letter = str.substr(0, 1)
reg = new RegExp(letter, 'g')
str = str.replace(reg, '')
newLength = str.length // 新長度
letterLength = oldLength - newLength // 字母出現次數
console.log(str,letterLength, max)
if (letterLength > max) {
max = letterLength
result = [{ letter: letter, count: max }]
console.log('>>>>>>')
}else if (letterLength === max) {
console.log('=====')
result.push({ letter: letter, count: max })
}
}