我变秃了,也变强了
最简单的字符串反转
如果考虑unicode问题的话,用for of 遍历
实现思路:使用for of遍历字符串,并添加到新字符串头部 ()
let str='abcdefghijklmnopqrst😘'
let newStr='';
let newStr2=str.split('').reverse().join('');
for(let i of str){ //可以解决32位utf-16字符的反转问题
newStr=i+newStr
}
console.log(newStr); //反转成功 ,表情字符也反转成功
console.log(newStr2); //反转成功
计算某一个字符在字符串在出现的次数
实现思路 :使用for循环遍历字符串,生成一个num变量,每个重复的字符都会使其增加1
let str='hello everyone';
let s='e'
function catStr(str,s){
ler num=0;
for(var i=0,len=str.length;i<len;i++){
if(str[i]==s){
num++
}
}
return num
}
catStr(str)
//for是最省性能的
计算字符串中出现的最多次数的字符和数量
实现思路 : 生成一个对象,它的key为每个不重复的字符;默认值为1,重复的字符值增加1
let str = 'asfkshfkhsagdadgawassadas';
function getMax(str){
let obj={} //新建对象用来接收字符作为key值
for(let i=0;i<str.length;i++){
let n=str.charAt(i)
if(obj[n]){ //每个字符对应一个key值,不存在该值的时候该值=1,存在重复时增加1
obj[n]++
}else{
obj[n]=1
}
}
//return obj //这一步完成后obj获取了所有的字符的数量
let maxStr=''
let maxNum=0 //生成两个空值用来接收
for(let i in obj){
if(obj[i]>maxNum){ //进行对比,找到出现次数最多的字符
maxNum=obj[i]
maxStr=i
}
}
console.log('出现次数最多的字符是:'+maxStr);
console.log('出现的次数为:'+maxNum)
}
字符串中正则检索
var str = 'world world world 123 456 7a8b';
// 传入字符串
var val = str.match('world');
console.log(val);
// ["world", index: 0, input: "world world world1", groups: undefined]
// 返回一个数组,其中存放了与它找到的匹配文本有关的信息。
//该数组的第 0 个元素存放的是匹配文本,而其余的元素存放的是与正则表达式的子表达式匹配的文本。
// 除了这些常规的数组元素之外,返回的数组还含有两个对象属性。
// index 属性声明的是匹配文本的起始字符在 stringObject 中的位置,input 属性声明的是对 stringObject 的引用。
// 传入正则表达式 g代表全局,不加只取第一个 加上i代表不区分大小写
// 数字检索/^\d{1,}$/ || /\d+/
console.log(str.match(/\d+/)); // ["123", index: 18, input: "world world world 123 456 7a8b", groups: undefined]
console.log(str.match(/\d+/g)); // ["123", "456", "7", "8"]
// 字母检索
console.log(str.match(/[a-zA-Z]+/ig)); // 所有字母
// 替换
// 传入字符
console.log(str.replace('w', 'W')); // World world world 123 456 7a8b 第一个字母替换
console.log(str.replaceAll('w', 'W')); // World World World 123 456 7a8b 所有字母替换
// 传入正则
console.log(str.replace(/\d+/, "X")); // world world world X 456 7a8b 替换第一个数字
console.log(str.replace(/\d+/g, "X")); // world world world X X XaXb 替换所有数字
console.log(str.replace(/\d+/g, "<span>$&</span>")); // world world world <span>123</span> <span>456</span> <span>7</span>a<span>8</span>b 替换所有数字,$&代表被替换的当前的值
console.log(str.replace(/[a-zA-Z]+/ig, "<span>$&</span>")) // <span>world</span> <span>world</span> <span>world</span> 123 456 7<span>a</span>8<span>b</span>
// 案例 所有数字标蓝
function formatNumber(msg) {
var str = msg.replace(/\d+/g, "<span style='color:#409EFF;'>$&</span>");
return str;
}
document.body.innerHTML = formatNumber('world world world 123 456 7a8b');
简单的将 a-b 类型命名 转为驼峰语法命名
const camelizeRE = /-(\w)/g
export const camelize = cached((str: string): string => {
return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '')
})