第十節(jié): JavaScript 字符串常用方法

  1. 字符串基本知識(shí)

1.1 字符串

字符串就是我們平時(shí)說(shuō)的話,字符串由一對(duì)單引號(hào)或雙引號(hào)組成.

1.2 字符串創(chuàng)建

字面量創(chuàng)建方式:

var str = "365天說(shuō)愛(ài)你們";

字符串就是特殊的數(shù)組,因?yàn)槎季哂衛(wèi)ength屬性,既然和數(shù)組很相似,就可以像數(shù)組一樣使用下標(biāo)來(lái)獲取字符

console.log(str[0])
  1. 字符串屬性

字符串自帶的length屬性

屬性length就是字符串的長(zhǎng)度

var str = "365天說(shuō)愛(ài)你";
console.log(str.length);  //7

中文、數(shù)字、英語(yǔ)字母、空格,都是1個(gè)長(zhǎng)度,字符串的長(zhǎng)度從0開(kāi)始;

3.常見(jiàn)的方法

一. 以下是查詢字符,字符編碼轉(zhuǎn)換的方法:

2.1 charAt() 返回在指定位置的字符

使用方法:

str.charAt(index);

str: 是字符串

charAt(); 是方法

index: 字符串的索引

整體返回:

返回查找到的字符

括號(hào)中傳入字符的下標(biāo)(索引),從0開(kāi)始

var str = 'abcdefg';
console.log(str.charAt(1));   //b

和數(shù)組下標(biāo)類似的。

var str = "abcdefg"
for(var i = 0 ; i < str.length ; i++){
    console.log(str.charAt(i));
}

這種獲取字符和下標(biāo)獲取的區(qū)別在哪里

  1. charAt() 當(dāng)參數(shù)索引不在字符串中是,返回空字符串
  2. 中括號(hào)[] 當(dāng)中括號(hào)內(nèi)的索引不在字符串中時(shí),返回undefined,因?yàn)楂@取一個(gè)對(duì)象身上不具有的屬性時(shí)返回undefined,中括號(hào)就是對(duì)象表示法
console.log(str.charAt(10));   // ""
console.log(str[10]);          // undefined

2.2 charCodeAt() 獲取字符串中對(duì)應(yīng)索引的字符編碼

使用方法:

str.charCodeAt(index);

和charAt() 一樣

整體返回:

返回charAt()方法查詢到字符的編碼

常識(shí)記憶的編碼

0-9 ===> 48-57

A-Z ===> 65-90

a-z ===> 97-122

var str = "wuwei";
console.log(str.charCodeAt(0))

2.3 formCharCode() 獲取對(duì)應(yīng)字符編碼的字符

使用語(yǔ)法:

String.fromCharCode(字符編碼);

整體返回:

字符編碼對(duì)應(yīng)的字符

var str = String.fromCharCode(97)
console.log(str)

2.4 通過(guò)字符串查詢索引

indexOf和lastIndexOf()

第一個(gè)參數(shù)是需要查詢的字符串

第二個(gè)參數(shù)是開(kāi)始查詢的索引

  1. indexOf() 檢查參數(shù)字符在字符串中的索引(下標(biāo))
    字符串按從左到右查找參數(shù)字符串,查詢到返回索引,查詢不到返回-1

    var str = 'wuweiiewuw';console.log(str.indexOf("e"));     //3// indexOf第二個(gè)參數(shù)是開(kāi)始查詢的索引var str = 'wuweiiewuw';console.log(str.indexOf("e",4));     //6
    
  2. lastIndexOf() 逆向獲取字符在字符串中的位置
    字符串按從右到左查找參數(shù)字符串,查詢到返回索引,查詢不到返回-1

    var str = 'wuweiiewuw';console.log(str.lastIndexOf("e"));     //6// indexOf第二個(gè)參數(shù)是開(kāi)始查詢的索引var str = 'wuweiiewuw';console.log(str.lastIndexOf("e",4));   //3
    
  3. search() 獲取字符在字符串中的位置
    和indexOf結(jié)果一樣

    var str = 'wuweiiewuw';console.log(str.search("e"));   //3// 沒(méi)有第二個(gè)參數(shù)
    

不同

  1. [], charAt() 是通過(guò)索引獲取字符
  2. indexOf(), lastIndexOf() 是通過(guò)字符獲取索引

二. 以下是字符串截取的方法

2.5 substr() 截取字符串

substr()方法傳入兩個(gè)參數(shù),第一個(gè)參數(shù)是開(kāi)始截取的下標(biāo),第二次參數(shù)是截取的數(shù)量

使用語(yǔ)法:

str.substr(start[,num]);

start: 從第幾個(gè)字符開(kāi)始截取,為字符索引(可以為負(fù)數(shù))

num: 是截取的個(gè)數(shù),可以省略,如果省略表示從第一個(gè)參數(shù)開(kāi)始截取剩下所有的參數(shù)

整體返回:

返回截取的字符

是否改變?cè)址?

不改變?cè)址?/p>

var str = 'abcdefgh';console.log(str.substr(2,5));// cdefg  從下標(biāo)為2的地方開(kāi)始,截取5個(gè)字符console.log(str.substr(2));// cdefgh 從下標(biāo)為2的地方開(kāi)始,截取剩余所有字符

2.6 substring() 截取字符串

substring()方法傳入兩個(gè)參數(shù),第一個(gè)參數(shù)是開(kāi)始截取的索引,第二個(gè)參數(shù)是截取結(jié)束的索引,包含開(kāi)始字符,不包含結(jié)束字符

使用語(yǔ)法:

str.substring(start[,end]);

start: 從第幾個(gè)字符開(kāi)始截取,為字符索引,(如果為負(fù)數(shù),截取全部字符)

end: 是截取結(jié)束字符的索引,截取的字符串不包含end索引對(duì)應(yīng)的字符,可以理解截取了(end- start)個(gè)字符,

可以省略,如果省略表示從第一個(gè)參數(shù)開(kāi)始截取剩下所有的參數(shù)

整體返回:

返回截取的字符

是否改變?cè)址?

不改變?cè)址?/p>

var str = 'abcdefgh';console.log(str.substring(2,5))// cde

2.7 slice() 截取

使用語(yǔ)法:

str.substr(start[,end]);

start: 從第幾個(gè)字符開(kāi)始截取,為字符索引,(如果為負(fù)數(shù),截取全部字符)

end: 是截取結(jié)束字符的索引,截取的字符串不包含end索引對(duì)應(yīng)的字符,可以理解截取了(end- start)個(gè)字符,

可以省略,如果省略表示從第一個(gè)參數(shù)開(kāi)始截取剩下所有的參數(shù)

整體返回:

返回截取的字符

是否改變?cè)址?

不改變?cè)址?/p>

var str = '365天說(shuō)愛(ài)你們';console.log(str.slice(-3,-1))//愛(ài)你 

從下標(biāo)為-3的位置開(kāi)始截取,截取到下標(biāo)為-1的位置,包含-3位置的字符,但不包含-1位置的字符

substring和slice的區(qū)別

slice支持負(fù)數(shù)索引
str.slice(-2,-1) ==> 從索引-2開(kāi)始,截取-1-(-2)個(gè)字符

三. 以下是字符串拼接,替換,切割方法:

2.8 concat() 拼接字符串

作用:實(shí)現(xiàn)字符串的拼接

使用語(yǔ)法:

str1.concat(str2);

將str2,str1進(jìn)行拼接,

整體返回:

返回拼接后的新字符串

是否改變?cè)址?

不改變?cè)址?/p>

var str = "你們好!";str.concat("小可愛(ài)們")// "你們好!小可愛(ài)們"

2.9 replace() 替換字符串

使用語(yǔ)法:

str.replace(str1,str2);

首先會(huì)在String中查找到str1子串,然后用str2,替換str1子串;

如果在String中查不到子串str1,那就直接返回String

只會(huì)替換從左向右第一次查詢成功的字符

整體返回:

返回替換后的新字符串

是否改變?cè)址?

不改變?cè)址?/p>

var str = '365天說(shuō)愛(ài)你們';console.log(str.replace("愛(ài)","喜歡"))//365天說(shuō)喜歡你們

2.10 split() 切割 ,把字符串切割為數(shù)組,

作用:用指定字符串把str分割成數(shù)組 和數(shù)組join方法對(duì)應(yīng)

使用語(yǔ)法:

str.split(str2);

str2: 將str按照str2字符切割成數(shù)組

整體返回:

返回切割后的數(shù)組;

是否改變?cè)址?

不改變?cè)址?/p>

按照split()里面?zhèn)魅雲(yún)?shù)進(jìn)行切割

var str = "我愛(ài)你們,親愛(ài)的祖國(guó)的人民幣";console.log(str.split("的"));//["我愛(ài)你們,親愛(ài)", "祖國(guó)", "人民幣"]

如果不傳入?yún)?shù),將整體切割為數(shù)組的一項(xiàng)

console.log(str.split());//["我愛(ài)你們,親愛(ài)的祖國(guó)的人民幣"]

如果傳入一個(gè)空字符串,則按字符切割

console.log(str.split(""));["我", "愛(ài)", "你", "們", ",", "親", "愛(ài)", "的", "祖", "國(guó)", "的", "人", "民", "幣"]

四. 以下改變英文字符串的大小寫(xiě):

2.11 toLowerCase(),toUpperCase()

toLowerCase(),將英文字符轉(zhuǎn)成小寫(xiě)

toUpperCase(),將引文字符轉(zhuǎn)成大寫(xiě)

  1. 返回新字符串
  2. 不改變?cè)址?/li>
var str = "wuwei";console.log(str.toUpperCase());

自己封裝這連個(gè)方法

function myUpper(str){    str = str || "";    var newStr = "";    for(var i = 0; i < str.length; i++){        var charCode = str.charCodeAt(i);        if(97 <= charCode  && charCode <=122 ){            newStr += String.fromCharCode(charCode - 32);        }else{            newStr += str[i];        }    }    return newStr;}

五. 以下是字符其他方法:

str.trimLeft() ==> 去除字符串開(kāi)始的空格
str.trimRight() ==> 去除字符串結(jié)束的空格
str.trim() ==> 去除字符串開(kāi)始和結(jié)束的空格

var str = "   wuwei   wuwei  "str.trimLeft();

封裝方法去除所有空格

var str = "   wuwei   wuwei  "function myTrim(str){   for(var i = str.length - 1; i >=0; i--){        if(str[i] == " "){            str = str.replace(str[i],"");        }    }     return str;}myTrim(str);



function myTrim(str){    str = str || "";    var arr = str.split("");    var newStr = "";   for(var i = 0; i < arr.length; i++){        if(arr[i] != " "){            newStr += arr[i]        }    }     return newStr;}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容