JS学习之字符串对象

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>字符串对象</title>
		<script>
			//基本包装类型
			//var str = 'andy';
			//console.log(str.length);
			//问题;
			// 只有对象才有属性和方法 (复杂数据类型才有属性和方法(即使用了new的))
			// 而str是简单数据类型,为什么会用length属性呢?
			// JS中对简单数据类型进行了基本包装,事实上上述代码的过程为
			// (1)把简单数据类型基本包装为复杂数据类型
			// var temp = new String('andy');
			// (2)把临时变量的值给str
			// str = temp;
			// (3)销毁这个临时变量
			// temp = null;
			//字符串不可变性
			//var str = 'andy';
			//console.log(str);
			//str = 'red';
			//console.log(str);
			//警告因为字符串的不可变性,所以不要大量拼接字符串
			// var str = '';
			// for(var i =1; i <= 100; i++){
			// 	str += i;
			// }
			// console.log(str);
			//字符串对象,根据字符返回位置 str.Indexof('要查找的字符',[起始位置])
			//[]表示可选的,即可写可不写
			// var str = '改革春风吹满地,春天来了';
			// console.log(str.indexOf('春',3));//从索引号为3的位置向后查找
			// console.log(str.length);
			//案例:返回字符串位置   重要案例
			//查找字符串'abcoefoxyozzopp'中所有o出现的位置和次数
			// 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');
			// var num = 0;
			// while(index !== -1){
			// 	console.log(index);
			// 	num++;
			// 	index = arr.indexOf('red',index + 1);
			// }
			// console.log('red 出现的次数是: ' + num);
			//6.4根据位置返回字符(重点)
			//1.charAt(index)根据位置返回字符
			// var str = 'andy';
			// //console.log(str.charAt(3));
			// //遍历所有字符
			// for(var i = 0;i <= str.length; i++){
			// 	console.log(str.charAt(i));
			// }
			//2.charCodeAt(index)根据位置返回ASC||码
			//判断用户按下了哪个键
			//var str = 'andy';
			//console.log(str.charCodeAt(3));
			// for(var i = 0; i <= str.length; i++){
			// 	console.log(str.charCodeAt(i));
			// }
			//3.str[index]H5新增  
			//console.log(str[3]);
			// 案例:返回字符位置,
			// 判断一个字符串'abcoefoxyozzopp'中出现次数最多的字符,并统计其次数
			// o.a = 1(若再次找到a 则+1)
			// o.b = 1
			// o.c = 1
			// o.o = 1
			// 1.核心算法:利用charAt()遍历这个字符串
			// 2.把每个字符都存储给对象,如果对象没有该属性就为1,如果存在了就+1
			// 3.遍历对象,得到最大值和该字符串
			
			// //小TIPS
			// var o = {
			// 	age: 15,//表示o的属性的时候各个属性之间用逗号表示,
			// 	//最后一个属性不用加标点
			// 	name: 'andy'
			// }
			// if(o['age']){//即有o的属性age吗?
			// 	console.log('里面有该属性');
			// }
			// else{
			// 	console.log('里面没有该属性');
			// }
			// 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;
			// 	}
			// }
			// console.log(o);
			// //遍历对象取出最大值
			// var max = 0;
			// var ch ='';
			// for(var k in o){
			// 	//k 得到的是属性名
			// 	//o[k]得到的是属性值
			// 	if(o[k] > max){
			// 		max = o[k];
			// 		ch = k;
			// 	}
			// }
			// console.log(max);
			// console.log('出现最多的字符是' + ch + '出现了' + max + '次');
			//1.字符产拼接
			// var str = 'andy';
			// console.log(str.concat('red'));//相当于+
			//2.截取字符串 substr('截取的开始位置','截取几个字符')
			// var str = '改革春风吹满地';
			// console.log(str.substr(2,2));
			//3.替换字符 replace('被替换的字符','替换为的字符')
			// var str = 'andy';
			// console.log(str.replace('a','b'));//replace()
			//仅能将遇到的第一个目标字符替换,若将所有的目标字符 替换用循环
			//有一个字符串'abcoefoxyozzopp'要求将所有的o替换为*
			// var str = 'abcoefoxyozzopp';
			// while(str.indexOf('o') !== -1){
			// 	str = str.replace('o','*');
			// }
			// console.log(str);
			//4.字符转换为数组 split('分隔符')join是把数组转换为字符串
			var str = 'red,pink,blue';
			console.log(str.split(','));//分隔符取决于输入的字符串使用的符号
			var str1 = 'red&pink&blue';
			console.log(str1.split('&'));
			
		</script>
	</head>
	<body>
		<span>特别说明字符中的所有方法,都不会修改字符串本身(字符串是不可变的)
操作完成后就返回一个新的字符串</span>
	</body>
</html>



6.1基本包装类型
为例方便操作基本数据类型,JS还提供了三个特殊的引用类型:Strig Number Boolen
基本包装类型就是把简单数据类型包装为复杂数据类型,这样基本数据类型就有了属性和方法
2.字符串的不可变性
重新给字符串赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变性。原来变量中的值在内存中值不可变。虽然看上去可以改变内容 但其实是地址改变了 
相当于内存中又开辟了一个新地址
3.特别说明字符中的所有方法,都不会修改字符串本身(字符串是不可变的)
操作完成后就返回一个新的字符串

indexOf('要查找的字符串',开始的位置)  返回指定内容在原字符串中的位置
如果找不到就返回-1,开始的位置是index的索引号
lastindexOf()  从后往前找,只按照第一个匹配的
4.根据位置返回字符(重点)
方法名       说明      使用方法
charAt(index)  返回指定位置的字符(index字符串的索引号)  str.charAt(0)
charCodeAt(index) 获取指定位置处字符的ASC||(index索引号)  str.charCodeAt(0)
str[index]    获取指定位置处字符    HTML5 IE8+支持 和charAt()等效
字符串的操作方法
concat(str1,str2,str3....) concat()方法用于连接两个或者多个字符串,拼接字符串,等价于++更常用
substr(start,length)  从start位置开始(索引号),length 取得个数(重点)
slice(start,end) 从start 位置开始截取到end位置,end 取不到(start,end用的都是索引号)
substring(start,end)从start位置开始,截取到end位置,end 取不到基本和slice相同,但是不接收负值


toUpperCase()//转换为大写
tolowercase()//转换为小写
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值