javaScript複習(四)String字串與String API
String: 字串
1、定義:多個字元組成的一個*只讀*的集合(陣列)
2、JavaScript內建物件:ES標準中已經定義好的,由瀏覽器廠商已經實現的物件
共11個:String Number Boolean
Array Date Math RegExp
Error Function Object Global(全域性)
3、包裝型別:臨時封裝原始型別資料,提供對原始型別資料的操作方法
①共3種包裝型別:String Number Boolean(不能new)
②何時使用包裝型別:自動使用
③為什麼使用包裝型別?原始型別的資料本來沒有任何方法,當程式中使用原始型別呼叫方法時,程式會自動建立包裝型別物件封裝該資料,等函式呼叫完,包裝型別自動釋放
④例:var n=100; console.log(n.toString(2)); //將n變成2進位制數輸出 輸出:1100100
n=100是一個原始型別的值,一個值怎麼會有方法,所以原本是不能使用toString方法的,但是因為有包裝型別,程式會自動建立包裝型別物件封裝該資料,console.log(n.toString(2));變成console.log(new Number(n).toString(2));,此時就是臨時的 Number物件呼叫toString方法了
4、String API
在陣列物件中,不改變原物件的API,字串就能用(concat slice)
比如:.length屬性:字元個數;都可用[i]訪問每個字元
①轉義字元:當字串的內容和程式的特殊符號衝突時,
或字串中包含功能字元時,都用\轉化字元的意義
常用 \n:換行 \t: 一次縮排Tab鍵 \":輸出 " \\:輸出 \
例:輸出這句話:我說:"你想的真美"
console.log("我說:"你想的真美""); // Uncaught SyntaxError: missing ) after argument list
console.log("我說:\"你想的真美\""); // 我說:"你想的真美"
②大小寫轉換:將字串中所有字元都統一轉為大寫或小寫
何時使用:當不區分大小寫時,比如:使用者名稱 驗證碼(常用) 電子郵件
轉大寫:str=str.toUpperCase();
轉小寫:str=str.toLowerCase();
③獲取指定位置的字元:3種:
1. str[i] //獲取倒數第二個字元 str[str.length-2]
2. str.charAt(i) //返回指定位置的字元,獲取第二個字元 str.charAt(2)
3. str.charCodeAt(i)-->獲得字元的unicode號
④ 查詢關鍵字的位置:2種:
1. var i=str.indexOf(kword[,starti]);
從左向右,查詢kword首字元在字串中的下標,如果沒找到,返回-1
starti:從starti位置開始向後查詢下一個,如果省略starti,預設從0開始找
2. var i=str.lastIndexOf(kword[,starti])
從starti位置開始,向左找下一個kword
⑤獲取子字串:3種
1. var subStr=str.slice(starti[,endi+1]) (常用) 與陣列slice用法相同,含頭不含尾,可用負值
pid.slice(6,-5+1);
2. var subStr=str.substring(starti[,endi+1]) 不支援負數引數
pid.substring(6,pid.length-5+1);
3. var subStr=str.substr(starti,取幾個); //pid.substr(6,8)
⑥連線字串(一般都是用+號直接解決,簡單粗暴,很少用API)
concat() 與陣列concat用法相同
⑦分隔字串:var arr=str.split("分隔符"),arr中以陣列形式儲存每段子字串
使用場景:今後只要分段處理字串時,都要先分隔,再遍歷
把一個單詞變成由字母組成的陣列 var chars=str.split("");
把一段文字變成由單片語成的陣列 var chars=str.split(" ");
⑧ 模式匹配:按照規則查詢或替換字串中的子內容
查詢:2種:
1. 只能從開始位置,找第一個匹配的關鍵字
var i=str.search(/kword/i); ,用來僅判斷有沒有關鍵字時
vs str.indexOf:
search專門用於模式匹配
indexOf不支援模式匹配
2. 獲得所有關鍵字的內容,或個數:
var arr=str.match(/kword/ig)
arr中儲存了所有關鍵字的內容, arr.length表示匹配的關鍵字的個數
*如果沒找到,返回null*,*都要先判斷是否為null,再處理!*
*match無法獲得關鍵字的下標位置!*
替換:var newStr=str.replace(模式,"替換內容")