js必備的內(nèi)置對象,內(nèi)置對象是ECMAscript標準以及定義好的,由瀏覽器廠商已經(jīng)實現(xiàn)的標準對象
內(nèi)置對象中封裝了專門的數(shù)據(jù)和操作數(shù)據(jù)常用的API
JavaScript中內(nèi)置對象列表有十個,分別是:
String,Boolean,Number,Array,Data,Math、Error、Function、Object、Global
包裝類型String、Number、Boolean:專門封裝原始類型的數(shù)據(jù),并提供對數(shù)據(jù)常用操作的內(nèi)置對象
why?因為要讓原始類型的數(shù)據(jù)也可以像引用類型一樣,擁有方法和屬性
什么時候用包裝類型?只要用原始類型的數(shù)據(jù)調(diào)用方法或者訪問屬性時,js引擎都會自動創(chuàng)建對應(yīng)的包裝類型對象
方法調(diào)用完,包裝類型對象會自動釋放
String 對象用于處理文本字符串
創(chuàng)建原始類型字符串變量
var stuName='Smith'? //直接引用
var gender='男';? ?//直接引用
var priceString=String(150.5);? //轉(zhuǎn)換類型
創(chuàng)建引用類型字符串對象:
var carType=New String('bmw528LI');//自己創(chuàng)建的,因為加New了
String的包裝類型
str.length:返回str字符串中的字符個數(shù)
str.toLowerCase()方法返回字符串的完全小寫格式
str.toUpperCase()方法返回字符串的完全大寫形式
var str="Hello,World";
str=str.toLowerCase();
str1=str.toUpperCase();
document.write(str+str1);
輸出hello,world HELLO,WORLD 需要注意的是,轉(zhuǎn)換完必須用一個字符接收,不接收的話參數(shù)傳不過來
字符串的內(nèi)容一旦創(chuàng)建,不可以修改,不可以修改元字符串
如果修改,必須創(chuàng)建新字符串,然后替換結(jié)果,保存新值,只要調(diào)用字符串的api,必須用新的變量接收返回值
字符串以上必須記住,面試必考
字符串API的學習;字符串的底層都是字符實現(xiàn)的
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?"女":"男");
編碼和轉(zhuǎn)碼Uncode
input=prompt("請輸入需要轉(zhuǎn)換的");
var result=[];
for(var i=0;i
}
document.write("你輸入的字符:"+input+"---"+"轉(zhuǎn)換后的字符:"+result.join(""));
轉(zhuǎn)換時候5位數(shù)字,不足五位的用00000填充
input=prompt("請輸入需要轉(zhuǎn)換的");
var result=[];
for(var i=0;i
if(num<10000){//不足五位的都補齊五位
var arr=[0,0,0,0,0];
var code=num+"";? //將num轉(zhuǎn)化為String
var start=5-code.length;
for(var n=0;n
start++;
}
num=arr.join("");
}
result.push(num);
}
document.write("你輸入的字符:"+input+"---"+"轉(zhuǎn)換后的字符:"+result.join(""));
轉(zhuǎn)換時候5位數(shù)字,不足五位的用00000填充? ,外加解碼
input=prompt("請輸入需要轉(zhuǎn)換的");
var result=[];
for(var i=0;i
if(num<10000){//不足五位的都補齊五位
var arr=[0,0,0,0,0];
var code=num+"";? //將num轉(zhuǎn)化為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+"---"+"轉(zhuǎn)換后的字符:"+c);
var b=[];
for(var i=0;i
b.push(String.fromCharCode(code));//入棧操作
}
var d=b.join("");
document.write("
轉(zhuǎn)換后的字符串:"+d);
按規(guī)律分割字符串? ? 重點 面試會用
分割后必須返回一個新的字符串,不然不能用
字符串優(yōu)化定律
頻繁對字符串+=,要用數(shù)組代替!!!!及其重要
step1:每個子字符串放入數(shù)組
step2:join("")拼接數(shù)組原色
用+"" 連接空字符串的方法效率是最高的,比toString的方法執(zhí)行效率高
字符串的三大操作定律? 1,查找關(guān)鍵字 2,替換關(guān)鍵 3, 獲取子字符串
1,查找關(guān)鍵字 返回的是關(guān)鍵字所在的位置,否則是-1
var index=str.indexOf("關(guān)鍵字");? 永遠只找一個關(guān)鍵字,默認只能從0位置開始
重載:var index=str.indexOf("關(guān)鍵字",from);? from開始查找的位置;
var str="今天是周五非常的開心周五";
var index=str.indexOf("周五");
console.log("位置:"+index+"發(fā)現(xiàn)關(guān)鍵字");
var index=str.indexOf("周五",index+1);
console.log("位置:"+index+"發(fā)現(xiàn)關(guān)鍵字");??
輸出:位置:3發(fā)現(xiàn)關(guān)鍵字? ? 位置:10發(fā)現(xiàn)關(guān)鍵字
優(yōu)化:indexOf()都用以下套路? 必須記住
var str="今天是周五非常的開心周五";
var index=-1;
while((index=str.indexOf("周五",index+1))!=-1){? //index+1是表示從上一次找到的位置開始,繼續(xù)下一個
console.log("位置"+index+"發(fā)現(xiàn)關(guān)鍵字");
}?
備注:var index=str.lastIndexOf("關(guān)鍵字",from); 是從后面往前面找
? ?var index=str.IndexOf("關(guān)鍵字",from);? ? ?是從前面往后面找
var str="今天是周五非常的開心周五";
var index=str.length;
while((index=str.lastIndexOf("周五",index-1))!=-1){? //index+1是表示從上一次找到的位置開始,繼續(xù)下一個
console.log("位置"+index+"發(fā)現(xiàn)關(guān)鍵字");
}?
字符串從后面往前面查找是需要修改兩個地方,
1:index+1變?yōu)閕ndex-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);
取得每個字母的首字母,然后轉(zhuǎn)大寫
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);
判斷一個字符串的數(shù)量:返回數(shù)字的個數(shù),字母的個數(shù),英文的個數(shù)
根據(jù)你unicode范圍
? ?48-57 ? ? ? ?是0-9是數(shù)字字符
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+
"
轉(zhuǎn)化成Unicode編碼是:"+num1+
"
漢字是:"+chsCount+
"
英文字符是:"+engCount+
"
數(shù)字是:"+numCount+
"
其他是:"+other);
? ? 模式匹配 :可以設(shè)置查找的規(guī)則或者是替換規(guī)則
何時使用模式匹配:要查找的關(guān)鍵字可能發(fā)生有規(guī)律的的變化
如何使用模式匹配:1,先定義模式:/關(guān)鍵字/模式? ? 注意不加雙引號
var reg=/no/i;? ? no是要查找的元素,i表示忽略大小寫,g表示全局作用替換可以是中文使用
String類型中,提供了專門支持模式匹配的API
按模式替換關(guān)鍵字: 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)方法可以在字符串內(nèi)檢索指定的值,或找到一個或多個與正則表達式匹配的子串
任何情況下,返回如果是數(shù)組的話,要加s?
缺陷的地方:可以返回關(guān)鍵字,但是不能看到地址
如果沒有找到,則返回null
var str="No zuo no die";
var reg=/no/ig;? ? ?//加上i可以忽略大小寫,如果不加,則匹配小寫,g全部替換
var kwords=str.match(reg);
if(kwords!="null"){//因為如果搜索的變量沒有,會被返回空,以后可能出現(xiàn)null的都提前先判斷一下
document.write(kwords);? //輸出No,no
document.write("共替換了"+kwords.length+"處");
}
查找? str.searh();
和indexOf相同,但是不支持模式查找
var index=str.search(reg)? 和indexOf完全相同
search是indexOf的模式查找版
正則表達式
why?字符串中字符出現(xiàn)的規(guī)律
作用:驗證字符串格式,查找關(guān)鍵字,替換關(guān)鍵字
1,選擇符號:[所以備選字符]
一個[],只能代表一類字符
1[123] 表示12,11,13
1[^123] 表示1和除了123都行
-符號,備選字符的連續(xù)范圍[1-9]表示1-9
[a-zA-Z0-9]->\w? 字母數(shù)字匹配??
[0-9]->\d 匹配數(shù)字
空字符? /s
字符出現(xiàn)的兩次{min,max}? num是固定長度? min最小長度,max最大長度
評論
查看更多