1. 程式人生 > >字符串String的API

字符串String的API

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);             //97
View 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);             //3
View 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);             //234
View 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);             //4
View 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);             //false
View 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);             //false
View 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);             //false
View 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);                 //ABC
View 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‘);             //vv012345vv
View Code

2.11 concat()
理解:合並字符串
使用:str.concat()
參數:沒有參數
返回值:合並之後的字符串
原字符串:不變
技術分享圖片
    let str1 = ‘012345‘;
    let res1 = str1.concat(‘abc‘);

    console.log(‘原字符串‘,str1);   //012345
    console.log(res1);             //012345abc
View 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);             //a012345
View 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);             //012345a
View 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);             //true
View 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);             //true
View 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);             //null
View 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);             //-1
View 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