1,根据字符返回位置(indexof(),lastindexof())
// 1 charAt() 根据位置返回字符
var str='andy';
console.log(str.charAt(3)); //输出y
// 2 charCodeAt(index)返回索引号的ASCII码 目的,判断用户按下了那个键
console.log(str.charCodeAt(1));
// 3 str[index]
console.log(str[1]);//n
题目: 查找字符串"abcoefoxyozzopp"中所有o出现的位置以及次数
思路:
1先查找第一个o出现的位置
2然后 只要indexOf 返回的结果不是 -1 就继续往后查找
3因为indexOf 只能查找到第一个,所以后面的查找,利用第二个参数,当前索引加1,从而继续查找
var str="abcoefoxyozzopp";
var index=str.indexOf('o'); //记录第一次o出现的位置
var num=0;//记数
while(index!==-1){ //不存在就返回-1退出循环
console.log(index);
index=str.indexOf("o",index+1);
num+=1;
}
console.log(num);
题目:判断一个字符串 ‘abcoefoxyozzopp’ 中出现次数最多的字符,并统计其次数。
思路:
1核心算法:利用 charAt() 遍历这个字符串
2把每个字符都存储给对象, 如果对象没有该属性,就为1,如果存在了就 +1
3遍历对象,得到最大值和该字符
var str="abcoefoxyozzopp";
var chars=[];//这是一个对象,不是数组
for(var i =0 ;i<=str.length-1;i++){
var o =str.charAt(i); //返回字符
if(chars[o]){//判断对象中有没有字符,有就加1 没有就重新建立
chars[o]+=1;
}else{
chars[o]=1;
}
}
console.log(chars);
var k=0;
var max =0;
var ch=""
for (k in chars){
if (chars[k]>max){
max=chars[k];
ch=k;
}
}
console.log(typeof(chars));
console.log("出现次数最多的字符是"+ch);
console.log(max);
2,字符串操作方法(重点)
// 字符串操作方法返回字符串
// 1 concat(string1,string2)拼接字符串
var str="andy";
console.log(str.concat("rad",'green'));//andyredgreen
// 2 substr(取的位置(索引号),取的长度)返回字符串
var str='改革春风吹满地';
console.log(str.substr(2,2));//春风
// 3 替换字符 replace 返回字符串 只会替换一个字符
var str ="改革春风吹满地";
console.log(str.replace("春","秋"));//改革秋风吹满地
// 替换多个字符
var str="abcoefoxyozzopp";
while(str.indexOf('o')!=-1){
str=str.replace("o",'a');
}
console.log(str);
// 字符串转化为数组 spilt();
var str="blue,green,pink";
// 字符串用什么分隔符,spilt里面就用什么分隔符
console.log(str.split(','));
var str="blue&green&pink";
console.log(str.split('&'));
3,字符串的大小写
// 转化大写toUpperCase(全部大写).小写toLowerCase(全部小写);
var str1="str";
var str2="Str";
console.log(str1.toUpperCase());
console.log(str2.toLowerCase());
// 首字母大小写的方法 利用替换replace()
console.log(str1.replace(str1[0],str1[0].toUpperCase()));
console.log(str1.replace(str2[0],str2[0].toLowerCase()));
4,作业
给定一个字符串,如:“abaasdffggghhjjkkgfddsssss3444343”,问题如下
// 给定一个字符串,如:“abaasdffggghhjjkkgfddsssss3444343”,问题如下:
var str ="abaasdffggghhjjkkgfddsssss3444343";
// 1、 字符串的长度
console.log(str.length);
// 2、 取出指定位置的字符,如:0,3,5,9等
console.log(str[0]);
// 3、 查找指定字符是否在以上字符串中存在,如:i,c ,b等
var index=str.indexOf("i");
if (index!=-1){
console.log("存在");
}else{
console.log("不存在");
}
// 4、 替换指定的字符,如:g替换为22,ss替换为b等操作方法
// console.log(str.replace("g",22));
// 5、 截取指定开始位置到结束位置的字符串,如:取得1-5的字符串
console.log(str.substr(1,5));
// 6、 找出以上字符串中出现次数最多的字符和出现的次数
var newarray={};
for (var i=0;i<=str.length-1;i++){
var strs=str[i];
if(newarray[strs]){
newarray[strs]+=1;
}else{
newarray[strs]=1;
}
}
console.log(newarray);
var max=0;
var ch="";
for ( var k in newarray){
if (newarray[k]>max){
max=newarray[k];
ch=k;
}
}
console.log(max);
console.log("出现次数最多的字符是"+ch);
// 7、 遍历字符串,并将遍历出的字符两头添加符号“@”
var str ="abaasdffggghhjjkkgfddsssss3444343";
console.log(str.concat("@"));
var newstr="";
for (var j=0;j<=str.length-1;j++){
if (j==0){
newstr="@"+str[0];
}else if(j==str.length-1){
newstr=newstr+str[j]+"@";
}else{
newstr+=str[j];
}
}
console.log(newstr);