<!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()//转换为小写
JS学习之字符串对象
最新推荐文章于 2024-07-14 15:54:59 发布