string的常用API:
split():按照括号内指定的位置对字符串分割并保存在数组中。
charArt(index):返回括号内指定位置的字符
indexOf():返回括号内指定字符在字符串中首次出现的位置
substring(start,end):返回从start位置开始到end-1位置的字符串(end位不包括)
substr(index,length):返回index位置开始长度为length的字符
slice(start,end):返回从start位置开始到end-1位置的字符串(end位不包括)
其中一下substring()、sbustr()、slice()参数为负数时
slice(-1):出现的负数与字符串本身长度相加
substr(-1,-4):第一个参数如果是负数与字符串长度相加,第二个只要为负数就转换为0;
substring(-1):只要出现负数就转换为0;
参考:https://blog.youkuaiyun.com/weixin_42659625/article/details/82755827
1、记录字符串的字符与出现次数
function getNum(str){
var obj={};
for(var i=0;i<str.length;i++){
obj[str[i]]= obj[str[i]]+1||1
}
return obj
}
console.log(getNum(str))
2、输入一行字符,分别统计字符串里面数字,字母,空格和其他字符的出现次数
var str='12,13.2 0 abA_'
//统计字符串里面数字,字母,其他字符的出现次数
function getNum(str){
var alphNum=str.match(/[a-zA-Z]/g).length
console.log('字母次数 '+alphNum);
str=str.replace(/[a-zA-Z]/g,'')
var dNum=str.match(/\d/g).length;
console.log('数字次数 '+dNum);
str=str.replace(/\d/g,'')
var spaceNum=str.match(/\s/g).length
str=str.replace(/\s/g,'')
console.log('空格次数 '+spaceNum);
console.log('其他字符次数 '+str.length);
}
getNum(str)
3、判断一个字符中出现次数最多的字符并统计次数
1、直接遍历字符串
var str='asfjasiofoivnoi'
function getNum(str){
let obj={};
for(var i=0;i<str.length;i++){
obj[str[i]]= obj[str[i]]+1||1
}
let maxNum=0;
let res;
for(let j in obj){
if(maxNum<obj[j]){
maxNum=obj[j];
res=j;
}
}
console.log(res,maxNum)
return obj;
}
console.log(getNum(str))
2、转成数组遍历
let str = 'asfjasiofoivnoi';
function count(str){
let obj={},
arr = str.split('');// 分割成数组
//遍历数组
arr.forEach(function(val,index){
//将数组的元素存入对象,初始值为1,如果后面遍历的元素之前已存在就+1
if(obj[val]){
obj[val]+=1;
}else{
obj[val]=1
}
})
//遍历对象中的属性(字符),值(出现的次数)
let num=0,
res;
for(let i in obj){
if(num<obj[i]){
//将最多的次数赋给num
num=obj[i];
//最多次数的属性(字符串)赋给res
res=i;
}
}
console.log('最多的字符串是'+res+', 出现次数是'+num);
}
count(str);