字符串小练习

案例一:找到这个字符串中所有的 o 出现的位置

“hello wod odd ott fbo nhyo”

1
2
3
4
5
6
7
8
var str = "hello wod odd ott fbo nhyo";
var index = 0;
//var index = str.indexOf('o',index);
//index++;
while((index = str.indexOf('o',index))!=-1){
console.log(index);
index++;
}

案例一升级版:找到这个字符串中所有的“你好啊”出现的位置

“李白你好啊你好啊杜甫说你好啊我也说你好啊”

1
2
3
4
5
6
7
var str = "李白你好啊你好啊杜甫说你好啊我也说你好啊";
var index = 0;
var key = '你好啊';
while((index = str.indexOf(key,index))!=-1){
console.log(index);
index+=key.length;
}

所以案例一的代码可以进行一下优化,如下:

1
2
3
4
5
6
7
var str = "hello wod odd ott fbo nhyo";
var index = 0;
var key = 'o';
while((index = str.indexOf(key,index))!=-1){
console.log(index);
index+=key.length;
}

案例二:找到字符串中每个字符出现了多少次

我写的臃肿版:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var str3 = "whatOareYyouYnoYshaHleiHoHmyHgod";
var length = str3.length;
var arr = [];
for(var i = 0; i < length; i++){
for(var j = 0; j < arr.length; j++){
if(arr[j]==str3[i]){
break;
}
}
if(j == arr.length){
arr[arr.length]=str3[i];
}
}
console.log(arr);
var num = [];
for(var i = 0; i < arr.length; i++){
num[i]=0;
for(var j = 0; j < length; j++){
if(str3[j]==arr[i]){
num[i]++;
}
}
console.log('字符'+arr[i]+'出现了'+num[i]+'次');
}

简洁版:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var str3 = "whatOareYyouYnoYshaHleiHoHmyHgod";
//第一步:把所有的字母全部变成小写
str3 = str3.toLocaleLowerCase();
//第二步:创建一个空对象,目的:把字母作为键,次数作为值
var obj = {};
//第三步,遍历字符串,获取每个字母
for (var i = 0; i < str3.length; i++) {
//判断obj这个对象中有没有这个字母(字母---键)
var key = str3[i];//每个字母
if (obj[key]) {//判断obj中有没有这个键
//对象中有这个字母了
obj[key]++;
} else {
//对象中没有这个字母,那就把字母加到对象中,并且给这个字母一个出现的次数,默认1次
obj[key] = 1;
}
}

//遍历对象,显示每个字母的次数
for(var key in obj){
console.log(key+"这个字母出现了"+obj[key]+"次");
}