字符串对象:
//查找字符串"abcoefoxyozzopp"中所有o出现的位置和次数
//核心算法:先查找出第一个位置
//然后,只要indexof返回的结果不是-1 就继续往后查找
//因为indexOf只能查找一个,所以后面的查找,一定是当前索引加1,从而继续查找
var str="oabcoefoxyozzopp";
var num=0;
var index=str.indexOf('o');
//console.log(index);
while(index!=-1){
console.log(index);
num++;
index=str.indexOf('o',index+1);
}
console.log('字符串中o出现的次数是'+num);
//作业:['red','blue','green','pink','red'],求red出现的位置和次数
//数组和字符串一样都有indexOf方法,核心算法:先找出第一个出现的位置
//如果indefOf不等于-1,继续查找,indexOf一次只能查找一次,所以位置向后加1
var arr=['red','blue','green','pink','red'];
var num=0;
index=arr.indexOf('red');
//console.log(index);
while(index!=-1){
console.log(index);
num++;
index=arr.indexOf('red',index+1);
}
console.log('数组中red出现的次数是:'+num);
//根据位置返回字符charAt,charCodeAt,str[index]
//根据位置返回字符charAt,charCodeAt,str[index]
var str='andy';
console.log(str.charAt(0));//返回的是字符a
console.log(str.charCodeAt(0));//返回的是字符a的ascii码
console.log(str[3]);//返回的是字符y
统计字符串中出现次数
//统计字符串"abcoefoxyozzopp"中字符出现的次数
//1、创建一个对象O
//0.a=1
//O.b=1
//O.o+=1
//核心算法:利用charAt()遍历字符串,如果O中没有,就设置成1,如果有,累加次数
//遍历对象,得到最大值和该字符
var str="abcoefoxyozzopp";
var O={};//创建一个对象
for (i=0;i<str.length;i++){
var chars=str.charAt(i);
if (O[chars]){
O[chars]+=1;
}else{
O[chars]=1;
}
}
console.log(O);
//遍历对象,找出出现最多的字符和次数
var max=0;
var ch='';
for ( var k in O){
if(O[k]>max){
max=O[k];
ch=k;
}
}
console.log(max);
console.log(ch);
替换和分割
//替换字符 字符串.replace(被替换的字符,要替换的字符);
var str='andyandy';
str=str.replace('a','b');//只会替换一个字符
console.log(str);
//如果想要替换对个字符,使用循环
//字符串"abcoefoxyozzopp"将里面所有的o替换成*
//使用indexOf判断里面有没有这个字符
var str1="abcoefoxyozzopp";
while (str1.indexOf('o')!==-1){
str1=str1.replace('o','*');
}
console.log(str1);
//分隔字符串---字符串转化成数组用的是split,数组分隔成字符串用的是join
var str='red,pink,blue';
console.log(str.split(','));
var str1='red&pink&blue';
console.log(str1.split('&'));
var arr=['red','blue','pink'];
console.log(arr.join('&'));//数组分隔成字符串
接下来是一个综合案例:
//给定一个字符串,'abaaasdffggghhhjjjkkkggfddsssss3434334'
//1、字符串的长度
//2、去除指定位置的字符,如:0,3,5,9
//3、查找指定字符是否在字符串中,如:i,cb等
//4、替换指定的字符,如:g替换成22,ss替换成b等操作
//5、截取指定开始开始位置到结束位置的字符串,如:取1-5之间的字符串
//6、找出亦或是哪个字符串出现的次数最多的字符歘和出现的次数
//
//
//1、字符串的长度
var str='abaaasdffggghhhjjjkkkggfddsssss3434334';
/*console.log(str.length);
//2、去除指定位置的字符,如:0,3,5,9
index=[0,3,5,9];
for (k in index){
console.log(str[k]);
}
//3、查找指定字符是否在字符串中,如:i,c,b等*/
index=['i','c','b','g','s'];
console.log(index[0]);
for (i=0;i<index.length;i++){
if (str.indexOf(index[i])!==-1){
console.log(index[i]+'存在字符串中');
}else{
console.log(index[i]+'不存在字符串当中');
}
}
//4、替换指定的字符,如:g替换成22,ss替换成b等操作
for (i=0;i<str.length;i++){
str=str.replace('g','22');
str=str.replace('ss','b');
}
console.log(str);
//5、截取指定开始开始位置到结束位置的字符串,如:取1-5之间的字符串
console.log(str.slice(1,6));
//6、找出以上哪个字符串出现的次数最多的字符歘和出现的次数
var o={};//创建一个空对象
for (i=0;i<str.length;i++){
var chars=str.charAt(i);//charAt()返回指定位置的元素
if (o[chars]){
o[chars]++;
}else{
o[chars]=1;
}
}
console.log(o);
//遍历o里面的元素,找出出现次数最大的元素
var max=0;//存放次数
var ch='';//存放字符
for(var k in o){
if(o[k]>max){
max=o[k];
ch=k;
}
}
console.log(ch,max);