字符串String的API
阿新 • • 發佈:2018-10-15
n) 理解 ret search 空格 mat 模式 lower 去掉
字符串的理解 1. 字符串的屬性 str.length 2. 字符串的方法 charAt() charCodeAt() indexOf() lastIndexOf() slice() substring() substr() includes() startsWidth() endsWidh() toLowerCase() toUpperCase() trim() splite()
內容
1. 字符串的屬性 str.length。長度,字符串中字符的個數
2. 字符串的方法: 關註:名稱、參數、返回值 2.1 charAt() 理解:從一個字符串中返回指定的字符. 使用:str.charAt(index) 參數:index : 一個介於0和字符串長度減1之間的整數。 (0~length-1),如果沒有提供索引,charAt() 將使用0。 返回值:String字符,字符串中對應位置上的字符,沒有就是undefined
原字符串:不變 2.2 charCodeAt() 理解:從一個字符串中返回指定的字符在Unicode中的編碼。 使用:str.charCodeAt(index) 參數:index : 一個介於0和字符串長度減1之間的整數。 (0~length-1),如果沒有提供索引,charCodeAt() 將使用0。 返回值:Number,數字,該字符對應的Unicode編碼
原字符串:不變
let str1 = ‘abc‘; let res1 = str1.charAt(2); let res2 = str1.charCodeAt(0); console.log(res1); //c console.log(res2); //97View Code
2.3 indexOf(),lastIndexOf() 理解:一個字符在一個字符串的位置 使用:str.indexOf(str,num),str.lastIndexOf(str,num) 參數:傳入一個字符,第二個參數是指從第幾個字符開始 返回值:Number (0~length-1),不存在就返回-1
原字符串:不變
let str1 = ‘abca‘; let res1 = str1.indexOf(‘a‘); let res2 = str1.lastIndexOf(‘a‘); console.log(res1); //0 console.log(res2); //3View Code
2.4 slice() 理解:從字符串中截取字符 使用:str.slice(),str.slice(num),str.slice(num1,num2) 參數:沒有參數,從0開始截取; 一個參數,從num開始截取到最後 兩個參數,從num1開始截取到num2,包括num1,不包括num2 參數可以是負數,length+負數 參數是順序,後面小於前面就不截取 返回值:截取的字符
原字符串:不變
//註意:第一個參數包含,第二個參數不包含;支持負數,負數會轉化成0;不支持倒序,將小的數放在前面 let str1 = ‘012345‘; let res1 = str1.slice(); //沒有參數 let res2 = str1.slice(2); //一個參數 let res3 = str1.slice(1,2); //兩個參數,第一中情況,第一個參數比第二個參數大 let res4 = str1.slice(2,1); //兩個參數,第二中情況,第一個參數比第二個參數小 let res5 = str1.slice(2,-1); //兩個參數,第二中情況,參數是負數 console.log(‘原字符串‘,str1); //012345 console.log(res1); //012345 console.log(res2); //2345 console.log(res3); //1 console.log(res4); // console.log(res5); //234View Code
2.5 substring() 理解:從字符串中截取字符 使用:str.substring(),str.substring(num),str.substring(num1,num2) 參數:沒有參數,從0開始截取; 一個參數,從num開始截取到最後 兩個參數,從num1開始截取到num2,包括num1,不包括num2 參數不可以是負數,就從0開始 參數是可以順序可以倒序,後面小於前面,兩個數字就倒一下,再截取 返回值:截取的字符
原字符串:不變
//註意:第一個參數包含,第二個參數不包含;不支持負數,負數會轉化成0;支持倒序,將小的數放在前面 let str1 = ‘012345‘; let res1 = str1.substring(); //沒有參數 let res2 = str1.substring(2); //一個參數 let res3 = str1.substring(1,2); //兩個參數,第一中情況,第一個參數比第二個參數大 let res4 = str1.substring(2,1); //兩個參數,第二中情況,第一個參數比第二個參數小 let res5 = str1.substring(2,-1); //兩個參數,第二中情況,參數是負數 console.log(‘原字符串‘,str1); //012345 console.log(res1); //012345 console.log(res2); //2345 console.log(res3); //1 console.log(res4); //1------- console.log(res5); //01-------View Code
2.6 substr() 理解:從字符串中截取字符 使用:str.substr(index,length) 參數:從第index開始截取長度為length的字符 返回值:截取的字符
原字符串:不變
//註意:第一個參數包含,第二個參數不包含;支持負數,負數會轉化成0;支持倒序,將小的數放在前面 let str1 = ‘012345‘; let res1 = str1.substr(); //沒有參數 let res2 = str1.substr(2); //一個參數 let res3 = str1.substr(1,2); //兩個參數,第一中情況,第一個參數比第二個參數大 let res4 = str1.substr(2,1); //兩個參數,第二中情況,第一個參數比第二個參數小 let res5 = str1.substr(-2,1); //兩個參數,第二中情況,參數是負數 console.log(‘原字符串‘,str1); //01234 console.log(res1); //01234 console.log(res2); //2345 console.log(res3); //12 console.log(res4); //2 console.log(res5); //4View Code
2.7 includes() 理解:字符串中是否包含某個字符 使用:str.includes(str) 參數:某個字符 返回值:true/false
原字符串:不變
let str1 = ‘012345‘; let res1 = str1.includes(‘4‘); let res2 = str1.includes(‘9‘); console.log(res1); //true console.log(res2); //falseView Code
2.8 startsWidth(),endsWidh() 理解:字符串是否已某個或某串字符開始/結束 使用:str.startsWidth(str),str.endsWidh(str) 參數:某個字符 返回值:true/false
原字符串:不變
let str1 = ‘012345‘; let res1 = str1.startsWith(‘0‘); let res2 = str1.startsWith(‘01‘); let res3 = str1.startsWith(‘2‘); console.log(res1); //true console.log(res2); //true console.log(res3); //falseView Code
let str1 = ‘012345‘; let res1 = str1.endsWith(‘5‘); let res2 = str1.endsWith(‘45‘); let res3 = str1.endsWith(‘2‘); console.log(res1); //true console.log(res2); //true console.log(res3); //falseView Code
2.9 toLowerCase(),toUpperCase() 理解:將字符串轉出小寫/大寫 使用:str.toLowerCase(),str.toUpperCase() 參數:沒有參數 返回值:字符串
原字符串:不變
let str1 = ‘ABC‘; let res1 = str1.toLowerCase(str1); console.log(‘元素字符串‘,str1); //ABC console.log(res1); //abc let str2 = ‘abcd‘; let res2 = str1.toUpperCase(str1); console.log(‘元素字符串‘,str2); //abc console.log(res2); //ABCView Code
2.10 trim() 理解:將字符串前面和後面的空格去掉 使用:str.trim() 參數:沒有參數 返回值:字符串
原字符串:不變
let str1 = ‘ 012345 ‘; let res1 = str1.trim(); console.log(‘原字符串‘,‘vv‘+str1+‘vv‘); //vv 012345 vv console.log(‘vv‘+res1+‘vv‘); //vv012345vvView Code
2.11 concat() 理解:合並字符串 使用:str.concat() 參數:沒有參數 返回值:合並之後的字符串
原字符串:不變
let str1 = ‘012345‘; let res1 = str1.concat(‘abc‘); console.log(‘原字符串‘,str1); //012345 console.log(res1); //012345abcView Code
2.12 split() 理解:合並字符串 使用:str.split() 參數:沒有參數 返回值:轉換之後的數組
原字符串:不變
let str1 = ‘012345‘; let res1 = str1.split(‘‘); console.log(‘原字符串‘,str1); //012345 console.log(res1); //["0", "1", "2", "3", "4", "5"]View Code
2.13 padStart() 理解:合並字符串 使用:str.padStart(),str.padStart(1),str.padStart(1,‘a‘) 參數:沒有參數,第一個參數是數字,第二個參數是字符串 返回值:往字符串最前面添加字符
原字符串:不變
let str1 = ‘012345‘; let res1 = str1.padStart(‘2‘); //一個參數,數字比位數小 let res2 = str1.padStart(‘8‘); //一個參數,數字比位數大,沒有第二個參數用空格填充 let res3 = str1.padStart(‘7‘,‘a‘); console.log(res1); //012345 console.log(‘vv‘+res2); //vv 012345 console.log(res3); //a012345View Code
2.14 padEnd() 理解:合並字符串 使用:str.padEnd(),str.padEnd(1),str.padEnd(1,‘a‘) 參數:沒有參數,第一個參數是數字,第二個參數是字符串 返回值:往字符串最後面添加字符
原字符串:不變
let str1 = ‘012345‘; let res1 = str1.padEnd(‘2‘); //一個參數,數字比位數小 let res2 = str1.padEnd(‘8‘); //一個參數,數字比位數大,沒有第二個參數用空格填充 let res3 = str1.padEnd(‘7‘,‘a‘); console.log(res1); //012345 console.log(res2+‘vv‘); //012345 vv console.log(res3); //012345aView Code
————————
2.15 regexp.test(str): 用法:正則/.test(字符串) 作用:檢測字符串中是否存在正則所匹配的內容 返回值:存在返回true,否則返回false
// test---QQ號碼校驗 let str1 = ‘a33345‘; let str2 = ‘323a222‘; let str3 = ‘22222344‘; let reg = /^[1-9]\d{4,10}$/; let res1 = reg.test(str1); let res2 = reg.test(str2); let res3 = reg.test(str3); console.log(res1); //false console.log(res2); //false console.log(res3); //trueView Code
// test---手機號碼校驗 let str1 = ‘a33345‘; let str2 = ‘23333‘; let str3 = ‘13333‘; let str4 = ‘12234432123‘; let reg = /^[1-9]\d{10}$/; let res1 = reg.test(str1); let res2 = reg.test(str2); let res3 = reg.test(str3); let res4 = reg.test(str4); console.log(res1); //false console.log(res2); //false console.log(res3); //false console.log(res4); //trueView Code
2.16 str.match(): 用法:字符串.match(正則/字符串) 作用:在字符串中查找參數所匹配的內容,並把內容保存在一個數組中返回 參數:正則/字符串 返回值:數組 註意:全局和懶惰模式下的區別
let str1 = ‘ma1ddddma2ggggma3‘; let res1 = str1.match(‘ma‘); //參數是字符串 let res2 = str1.match(/ma\d/); //參數是正則 let res3 = str1.match(/ma\d/g); //參數是正則 let res4 = str1.match(4); //參數是正則 console.log(res1); //["ma", index: 0, input: "ma1ddddma2ggggma3", groups: undefined] console.log(res2); //["ma1", index: 0, input: "ma1ddddma2ggggma3", groups: undefined] console.log(res3); //["ma1", "ma2", "ma3"] console.log(res4); //nullView Code
2.17 str.search(): 用法:字符串.search(正則/字符串) 作用:在字符串中搜索參數中所匹配的內容首次出現的位置 參數:正則/字符串 返回值:返回位置,沒有-1 註意:和indexOf的區別 indexOf不支持正則 search支持正則
let str1 = ‘ma1ddddma2ggg2gma3‘; let res1 = str1.search(‘2‘); //參數是字符串 let res2 = str1.search(/\d/); //參數是正則 let res3 = str1.search(/\d/g); //參數是正則 let res4 = str1.search(4); //參數是正則 console.log(res1); //9 console.log(res2); //2 console.log(res3); //2 console.log(res4); //-1View Code
2.18 str.replace(): str.replace(/正則/,新的字符): str.replace(/正則/,fn(con,a,b,c)): 作用:在字符串中搜索指定內容,並使用新的內容去替換 用法1:字符串.replace(要查找的字符串,新的字符串) 參數:要查找的字符串,新的字符串 返回值:返回新的字符串,不改變原字符串 用法2:第二個參數可以是一個回調函數,每一次的匹配,都會執行一次回調函數,並把回調函數的返回值作為新的內容, 參數:要查找的字符串,fn fn的參數:第一個參數是匹配的內容,第二個及以後是子項,即()裏面的內容 返回值:回調函數的返回值作為新的內容
let str1 = ‘ma1ddddma22ggg222gma3333‘; let res1 = str1.replace(‘2‘,‘*‘); //參數是字符串,字符串 let res2 = str1.replace(/ma\d/g,‘*‘); //參數是正則,字符串 let res3 = str1.replace(/\d/g,function (con) { var s=‘‘; for(var i=0; i<con.length; i++){ s+=‘*‘; } return s; }); console.log(‘原始‘,str1) //ma1ddddma22ggg222gma3333 console.log(res1); //ma1ddddma*2ggg222gma3333 console.log(res2); //*dddd*2ggg222g*333 console.log(res3); //ma*ddddma**ggg***gma****View Code
// replace---敏感詞替換 let str1 = ‘js激發了對方css法律的糾js紛‘; let res1 = str1.replace(/js|css/g,function (con) { var s=‘‘; for(var i=0; i<con.length; i++){ s+=‘*‘; } return s; }); console.log(‘原始‘,str1) //js激發了對方css法律的糾js紛 console.log(res1); //**激發了對方***法律的糾**紛View Code
let str1 = ‘js11激發了對方css222法律的糾js4343紛‘; let res1 = str1.replace(/(js)(\d*)/g,function (con,tt,mm) { console.log(con,tt,mm) var s=‘‘; for(var i=0; i<mm.length; i++){ s+=‘*‘; } return tt + s; }); console.log(‘原始‘,str1) //js11激發了對方css222法律的糾js4343紛 console.log(res1); //js**激發了對方css222法律的糾js****紛View Code
包裝對象的理解
問題:只有對象才有屬性和方法,為什麽字符串、數字、布爾值這些非對象類型的數據可以調用屬性和方法?
解決:當我們去訪問一個基本數據類型(字符串,數字,布爾值)數據下的屬性或方法的時候,js內部會根據當前這個數據的類型,調用與其對應的構造函數,使用其值創建一個對應類型出來。我們把這個稱為:包裝對象。
例子:
var str = ‘miaov‘;
str.length => str是基本類型,沒有屬性,包裝:在內部創建一個與該類型一樣的虛擬對象,var tempStr = new String(str),return tempStr.length,我們把這個稱為:包裝對象。
所以,字符串方法,數字方法,布爾值方法,操作都不會改變原有的數據。
改變字符串的方法:trim,padStart,padEnd
合並字符串從concat不改變原字符串
字符串String的API