js必备的内置对象,内置对象是ECMAscript标准以及定义好的,由浏览器厂商已经实现的标准对象
内置对象中封装了专门的数据和操作数据常用的API
JavaScript中内置对象列表有十个,分别是:
String,Boolean,Number,Array,Data,Math、Error、Function、Object、Global
包装类型String、Number、Boolean:专门封装原始类型的数据,并提供对数据常用操作的内置对象
why?因为要让原始类型的数据也可以像引用类型一样,拥有方法和属性
什么时候用包装类型?只要用原始类型的数据调用方法或者访问属性时,js引擎都会自动创建对应的包装类型对象
方法调用完,包装类型对象会自动释放
String 对象用于处理文本字符串
创建原始类型字符串变量
var stuName='Smith' //直接引用
var gender='男'; //直接引用
var priceString=String(150.5); //转换类型
创建引用类型字符串对象:
var carType=New String('bmw528LI');//自己创建的,因为加New了
String的包装类型
str.length:返回str字符串中的字符个数
str.toLowerCase()方法返回字符串的完全小写格式
str.toUpperCase()方法返回字符串的完全大写形式
var str="Hello,World";
str=str.toLowerCase();
str1=str.toUpperCase();
document.write(str+str1);
输出hello,world HELLO,WORLD 需要注意的是,转换完必须用一个字符接收,不接收的话参数传不过来
字符串的内容一旦创建,不可以修改,不可以修改元字符串
如果修改,必须创建新字符串,然后替换结果,保存新值,只要调用字符串的api,必须用新的变量接收返回值
字符串以上必须记住,面试必考
字符串API的学习;字符串的底层都是字符实现的
var a='hello';
console.log(a.length);//输出5 5个字符
返回指定位置的字符:var char=str.charAt(index); //在index位置的char,字符
输入身份证号输出性别
var pid="371471194710040056";
var char=pid.charAt(pid.length-2);
console.log(char%2==0?"女":"男");
编码和转码Uncode
input=prompt("请输入需要转换的");
var result=[];
for(var i=0;i
}
document.write("你输入的字符:"+input+"---"+"转换后的字符:"+result.join(""));
转换时候5位数字,不足五位的用00000填充
input=prompt("请输入需要转换的");
var result=[];
for(var i=0;i
if(num<10000){//不足五位的都补齐五位
var arr=[0,0,0,0,0];
var code=num+""; //将num转化为String
var start=5-code.length;
for(var n=0;n
start++;
}
num=arr.join("");
}
result.push(num);
}
document.write("你输入的字符:"+input+"---"+"转换后的字符:"+result.join(""));
转换时候5位数字,不足五位的用00000填充 ,外加解码
input=prompt("请输入需要转换的");
var result=[];
for(var i=0;i
if(num<10000){//不足五位的都补齐五位
var arr=[0,0,0,0,0];
var code=num+""; //将num转化为String
var start=5-code.length;
for(var n=0;n
start++;
}
num=arr.join("");
}
result.push(num);
var c;
c=result.join("");
}
document.write("你输入的字符:"+input+"---"+"转换后的字符:"+c);
var b=[];
for(var i=0;i
b.push(String.fromCharCode(code));//入栈操作
}
var d=b.join("");
document.write("
转换后的字符串:"+d);
按规律分割字符串 重点 面试会用
分割后必须返回一个新的字符串,不然不能用
字符串优化定律
频繁对字符串+=,要用数组代替!!!!及其重要
step1:每个子字符串放入数组
step2:join("")拼接数组原色
用+"" 连接空字符串的方法效率是最高的,比toString的方法执行效率高
字符串的三大操作定律 1,查找关键字 2,替换关键 3, 获取子字符串
1,查找关键字 返回的是关键字所在的位置,否则是-1
var index=str.indexOf("关键字"); 永远只找一个关键字,默认只能从0位置开始
重载:var index=str.indexOf("关键字",from); from开始查找的位置;
var str="今天是周五非常的开心周五";
var index=str.indexOf("周五");
console.log("位置:"+index+"发现关键字");
var index=str.indexOf("周五",index+1);
console.log("位置:"+index+"发现关键字");
输出:位置:3发现关键字 位置:10发现关键字
优化:indexOf()都用以下套路 必须记住
var str="今天是周五非常的开心周五";
var index=-1;
while((index=str.indexOf("周五",index+1))!=-1){ //index+1是表示从上一次找到的位置开始,继续下一个
console.log("位置"+index+"发现关键字");
}
备注:var index=str.lastIndexOf("关键字",from); 是从后面往前面找
var index=str.IndexOf("关键字",from); 是从前面往后面找
var str="今天是周五非常的开心周五";
var index=str.length;
while((index=str.lastIndexOf("周五",index-1))!=-1){ //index+1是表示从上一次找到的位置开始,继续下一个
console.log("位置"+index+"发现关键字");
}
字符串从后面往前面查找是需要修改两个地方,
1:index+1变为index-1,因为一直往后
2:var index=-1 变成 var index=str.length; 因为是从最大的长度开始
字符串的截取操作
var subStr=str.slice(start,end); 含头不含尾
用法同substring(java语言是substr,js中是slice) 唯一差别slice不支持-1
如果省略后面的字符,就会把所有的都会截取
var str="345681994412270088";
var subStr=str.slice(5,8+1);
var subStr1=str.slice(-12-1,-9); //从后面开始
document.write("你的出生年份是"+subStr);
document.write("你的出生年份是"+subStr1);
取得每个字母的首字母,然后转大写
var str="you can you up";
var words=str.split(" "); //按照" "空格开始分割
for(var i=0;i
words[i]=words[i][0].toUpperCase()+words[i].substr(1);//取低于个元素,开头第一个字母大写
}
str=words.join(" ");
document.write(str);
判断一个字符串的数量:返回数字的个数,字母的个数,英文的个数
根据你unicode范围
48-57 是0-9是数字字符
65-90 A-Z的范围
97-122 a-z是小写字母
19968-40869 汉字的范围
var str="选购AppleCare+,延保2年";
var engCount=0;
var numCount=0;
var chsCount=0;
var other=0;
var num1=str.charCodeAt();
for(var i=0;i
if(num>=19968&&num<=40869){
chsCount++;
}else if((num>=65&&num<=90)||(num>=97&&num<=122)){
engCount++;
}else if(num>=48&&num<=57){
numCount++;
}else{
other++;
}
}
document.write("原字符是:"+str+
"
转化成Unicode编码是:"+num1+
"
汉字是:"+chsCount+
"
英文字符是:"+engCount+
"
数字是:"+numCount+
"
其他是:"+other);
模式匹配 :可以设置查找的规则或者是替换规则
何时使用模式匹配:要查找的关键字可能发生有规律的的变化
如何使用模式匹配:1,先定义模式:/关键字/模式 注意不加双引号
var reg=/no/i; no是要查找的元素,i表示忽略大小写,g表示全局作用替换可以是中文使用
String类型中,提供了专门支持模式匹配的API
按模式替换关键字: str=str.replace(reg,"新的值"); 变量必须回传
var str="No zuo no die";
var reg=/no/ig; //加上i可以忽略大小写,如果不加,则匹配小写,g全部替换
str=str.replace(reg,"yes");
document.write(str);
匹配 match(value/regexp)方法可以在字符串内检索指定的值,或找到一个或多个与正则表达式匹配的子串
任何情况下,返回如果是数组的话,要加s
缺陷的地方:可以返回关键字,但是不能看到地址
如果没有找到,则返回null
var str="No zuo no die";
var reg=/no/ig; //加上i可以忽略大小写,如果不加,则匹配小写,g全部替换
var kwords=str.match(reg);
if(kwords!="null"){//因为如果搜索的变量没有,会被返回空,以后可能出现null的都提前先判断一下
document.write(kwords); //输出No,no
document.write("共替换了"+kwords.length+"处");
}
查找 str.searh();
和indexOf相同,但是不支持模式查找
var index=str.search(reg) 和indexOf完全相同
search是indexOf的模式查找版
正则表达式
why?字符串中字符出现的规律
作用:验证字符串格式,查找关键字,替换关键字
1,选择符号:[所以备选字符]
一个[],只能代表一类字符
1[123] 表示12,11,13
1[^123] 表示1和除了123都行
-符号,备选字符的连续范围[1-9]表示1-9
[a-zA-Z0-9]->\w 字母数字匹配
[0-9]->\d 匹配数字
空字符 /s
字符出现的两次{min,max} num是固定长度 min最小长度,max最大长度
评论
查看更多