字符串对象案例:返回字符位置,统计最多字符,替换字符

基本包装类型

就是将str从简单的类型包装成复杂的类型,这样就有了方法和属性

过程:

// 1. 生成临时变量,把简单类型包装为复杂数据类型
			var temp = new String('andy');
			// 2. 赋值给我们声明的字符变量
			str = temp;
			// 3. 销毁临时变量
			temp = null;

字符串不可变

指的是里面的值不可变,虽然看上去可以改变内容,但其实是地址变了,内存中新开辟了一个内存空间。

var str = 'abc';
str = 'hello';
// 当重新给 str 赋值的时候,常量'abc'不会被修改,依然在内存中
// 重新给字符串赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变
// 由于字符串的不可变,在大量拼接字符串的时候会有效率问题
var str = '';
for (var i = 0; i < 100000; i++) {
 str += i;
}
console.log(str); // 这个结果需要花费大量时间来显示,因为需要不断的开辟新的空间

根据字符返回位置

var str="qwertyuqwe"
			console.log(str.indexOf("e",3))//从下标为3开始查找

案例:返回字符位置

查找字符串"abcoefoxyozzopp"中所有o出现的位置以及次数

① 核心算法:先查找第一个o出现的位置

② 然后 只要indexOf 返回的结果不是 -1 就继续往后查找

③ 因为indexOf 只能查找到第一个,所以后面的查找,利用第二个参数,当前索引加1,从而继续查找

var str="abcoefoxyozzopp";
			var index=str.indexOf('o')
			var num=0
			while(index!==-1){
				console.log(index);
				num++;
				index=str.indexOf('o',index+1)
			}
			console.log('o出现了次数是'+num)

课后作业['red','blue','red','green','pink','red'],求red出现的次数

var arr=['red','blue','red','green','pink','red']
			var index=arr.indexOf('red')
			while(index!==-1){
				console.log(index);
				index=arr.indexOf('red',index+1)
			}

根据位置返回字符(重点) 

 str[index] H5新增的

var str="asdfsg";
			console.log(str[3]);

案例:返回字符位置 判断一个字符串 'abcoefoxyozzopp' 中出现次数最多的字符,并统计其次数。

① 核心算法:利用 charAt() 遍历这个字符串

② 把每个字符都存储给对象, 如果对象没有该属性,就为1,如果存在了就 +1

③ 遍历对象,得到最大值和该字符

把每个字符都存储给对象, 如果对象没有该属性,就为1,如果存在了就 +1  这一步用代码实现为

var str='abcoefoxyozzopp'
			var o={}
			for (var i = 0; i < str.length; i++) {
				var chars=str.charAt(i)//chars是字符串的每一个字符
				if(o[chars]){//o[chars]得到的属性值    就是判断有么有这个字符
					o[chars]++
				}else{
					o[chars]=1;
				}
				}

2.遍历对象 

var max=0;
				var ch=';'
				for (let k in o) {
					// k得到的是属性名
					// o[k]得到的属性值
					if(o[k]>max){
						max=o[k]
						ch=k
					}
				}
				console.log(max)
				console.log('最多的字符是'+ch)

 完整代码

var str='abcoefoxyozzopp'
			var o={}
			for (var i = 0; i < str.length; i++) {
				var chars=str.charAt(i)//chars是字符串的每一个字符
				if(o[chars]){//o[chars]得到的属性值    就是判断有么有这个字符
					o[chars]++
				}else{
					o[chars]=1;
				}
				}
				// 2.遍历对象
				var max=0;
				var ch=';'
				for (let k in o) {
					// k得到的是属性名
					// o[k]得到的属性值
					if(o[k]>max){
						max=o[k]
						ch=k
					}
				}
				console.log(max)
				console.log('最多的字符是'+ch)

拼接以及截取字符串

 substr('截取的起始位置:','截取几个字符')

var str1='改革春风吹满低';
				console.log(str1.substr(2,2));//第一个2为索引号,第二个2为截取的字符  春风

替换字符串以及转换数组

1.替换字符replace('被替换的字符','替换为的字符')
                
2.字符转发为数组 split('分隔符')

案例:有一个字符串 'abcoefoxyozzopp'要求把里面所有的o替换为*

var str='abcoefoxyozzopp'
				while(str.indexOf('o')!==-1){
					str=str.replace('o','*');
				}
				console.log(str)
var str2='red,pink,blue'
				console.log(str.split(','));

给定一个字符串,如:“abaasdffggghhjjkkgfddsssss3444343”,问题如下:

1、 字符串的长度

2、 取出指定位置的字符,如:0,3,5,9等

3、 查找指定字符是否在以上字符串中存在,如:i,c ,b等

4、 替换指定的字符,如:g替换为22,ss替换为b等操作方法

5、 截取指定开始位置到结束位置的字符串,如:取得1-5的字符串

6、 找出以上字符串中出现次数最多的字符和出现的次数

7、 遍历字符串,并将遍历出的字符两头添加符号“@‘’

// 7、 遍历字符串,并将遍历出的字符两头添加符号“@‘’
				var str="abaasdffggghhjjkkgfddsssss3444343";
				console.log("字符串长度为"+str.length)
				
				console.log(str[0]+str[3]+str[5]+str[9])
				
				var arr=['i','c','b']
				for(var i=0;i<arr.length;i++){
					var str1=str.indexOf(arr[i])
					if (str1!==1){
						console.log('不存在')
					}else{
						console.log('存在')
					}
				}
				
				while(str.indexOf('g')!==-1){
					str=str.replace('g','22')
				}
				console.log(str)
				while(str.indexOf('ss')!==-1){
					str=str.replace('ss','b')
				}
				console.log(str)
				
				console.log(str.substr(1,5))
				console.log(str)
				var o={}
				console.log(str)
				for (var i = 0; i < str.length; i++) {
					var chars=str.charAt(i)
					if(o[chars]){
						o[chars]++;
					}else{
						o[chars]=1
					}
				}
				var max=0;
				var ch='';
				for (let k in o) {
					if(o[k]>max){
						max=o[k]
						ch=k
					}
				}
				console.log('出现次数最多的字符'+ch+'和出现的次数'+max)
				var new_str=""
				for (str1 in str){
					new_str+="@"+str1+"@"
				}
				console.log(new_str)

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
)">
下一篇>>