- 字符串基本知識(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])
- 字符串屬性
字符串自帶的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ū)別在哪里
- charAt() 當(dāng)參數(shù)索引不在字符串中是,返回空字符串
- 中括號(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)始查詢的索引
-
indexOf() 檢查參數(shù)字符在字符串中的索引(下標(biāo))
字符串按從左到右查找參數(shù)字符串,查詢到返回索引,查詢不到返回-1var str = 'wuweiiewuw';console.log(str.indexOf("e")); //3// indexOf第二個(gè)參數(shù)是開(kāi)始查詢的索引var str = 'wuweiiewuw';console.log(str.indexOf("e",4)); //6 -
lastIndexOf() 逆向獲取字符在字符串中的位置
字符串按從右到左查找參數(shù)字符串,查詢到返回索引,查詢不到返回-1var str = 'wuweiiewuw';console.log(str.lastIndexOf("e")); //6// indexOf第二個(gè)參數(shù)是開(kāi)始查詢的索引var str = 'wuweiiewuw';console.log(str.lastIndexOf("e",4)); //3 -
search() 獲取字符在字符串中的位置
和indexOf結(jié)果一樣var str = 'wuweiiewuw';console.log(str.search("e")); //3// 沒(méi)有第二個(gè)參數(shù)
不同
- [], charAt() 是通過(guò)索引獲取字符
- 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ě)
- 返回新字符串
- 不改變?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;}