JavaScript String 字串型別
1. String物件屬性
屬性 | 描述 |
---|---|
length | 字串的長度 |
示例程式碼:
var str ="this is a string";
console.log(str.length);
//16
2. String物件方法
String 型別的方法有很多,其中有一部分涉及到文字的樣式變化,根據HTML規範,頁面的結構、樣式及行為應當分離。當我們想要改變文字的樣式時,應該引用相應的CSS樣式,而是通過JS去實現,因此本文對這部分的JS方法不作詳細介紹。
屬性 | 描述 |
---|---|
charAt() | 返回在指定位置的字元。 |
charCodeAt() | 返回在指定的位置的字元的 Unicode 編碼。 |
fromCharCode() | 從字元編碼建立一個字串。 |
concat() | 連線字串。 |
indexOf() | 檢索字串。 |
lastIndexOf() | 從後向前搜尋字串。 |
localeCompare() | 用本地特定的順序來比較兩個字串。 |
match() | 找到一個或多個正則表示式的匹配。 |
replace() | 替換與正則表示式匹配的子串。 |
search() | 檢索與正則表示式相匹配的值。 |
slice() | 提取字串的片斷,並在新的字串中返回被提取的部分。 |
substr() | 從起始索引號提取字串中指定數目的字元。 |
substring() | 提取字串中兩個指定的索引號之間的字元。 |
split() | 把字串分割為字串陣列。 |
toLocaleLowerCase() | 把字串轉換為小寫。 |
toLocaleUpperCase() | 把字串轉換為大寫。 |
toLowerCase() | 把字串轉換為小寫。 |
toUpperCase() | 把字串轉換為大寫。 |
toSource() | 代表物件的原始碼。 |
toString() | 返回字串。 |
valueOf() | 返回某個字串物件的原始值。 |
- | - |
涉及樣式調整或頁面結構的方法 | |
anchor() | 建立 HTML 錨。 |
big() | 用大號字型顯示字串。 |
blink() | 顯示閃動字串。 |
bold() | 使用粗體顯示字串。 |
fixed() | 以打字機文字顯示字串。 |
fontcolor() | 使用指定的顏色來顯示字串。 |
fontsize() | 使用指定的尺寸來顯示字串。 |
italics() | 使用斜體顯示字串。 |
link() | 將字串顯示為連結。 |
small() | 使用小字號來顯示字串。 |
strike() | 使用刪除線來顯示字串。 |
sub() | 把字串顯示為下標。 |
sup() | 把字串顯示為上標。 |
程式碼示例:
var str = "hello";
console.log(str.charAt(0));
//h
console.log(str.charAt(10));
//如果下標超過字串的長度,則返回空字串
console.log(str.charCodeAt(0));
//104 “h”的Unicode編碼
console.log(str.charCodeAt(str.length));
//NaN 當下標超過字串長度時
console.log(String.fromCharCode(97,98,99,100));
//abcd 這個方法與charCodeAt()方法相對應,接收一個Unicode值,返回字元結果。與其他方法不同的是這
//是String物件的一個靜態方法,因此使用的方式為String.fromCharCode(num),
//而不是strObj.fromCharCode(num)
console.log(str.concat(" world"));
//hello word
console.log(str);
//hello str本身的值並沒有改變
console.log(str.concat(['a','b']));
//helloa,b 會先將陣列字串化,然後再進行拼接
console.log(str.indexOf("l"));
//2 返回指定字元在字串中首次出現的下標(str中包含兩個“l”)
console.log(str.indexOf("z"));
//-1 若該字元不存在則返回“-1”
console.log(str.indexOf("l"));
//3
var a="a",b="b";
console.log(a.localCompare(b));
//-1 若兩個字元相等則返回“0”,若a大於b則返回“1”
2.1 字元查詢與正則匹配 match()、search()、replace()
這三個方法都可用於正則匹配,所接受的引數即可以是一個指定的字串,也可以是一個正則表示式。
var mail= "[email protected]";
console.log(mail.match(mail.match(/@\w+./)));
//@gmail.
var str = "hello world";
console.log(str.replace(/\b\w+\b/g,function(word){
return word.substring(0,1).toUpperCase()+word.substring(1);
}));
//Hello World;
console.log(str.search(/world/));
//6
2.2 字串擷取 slice(star,end)、substr(star,length)、substring(star,end)
slice與substring一樣都是用來擷取字串,第一個引數代表起始位置(包含),第二個引數代表結束位置(不包含),唯一的不同在於,slice的兩個引數可以為負數,而substing的引數需要為正整數。當slice的引數為負數時,代表從後向前的下標,例如如果star=-1則代表起始位置是最後一個字元。
substr的第一個引數代表起始位置,第二個引數代表擷取的字元長度,由於ECMAscript沒有對該方法進行標準化,因此不推薦使用。
var str = "hello word";
console.log(str.slice(-3,-1));
//or
console.log(str.substr(1,2));
//el
console.log(str.substring(0,2));
//he
2.3 字串分隔 split(separator[, num])
split() 方法用於把一個字串分割成字串陣列。第一個引數程式碼分隔符,第二個引數是可選的,如果不填那麼split將分割後的陣列如數返回,如果num有值,則返回對應數量的陣列
var str = "a b c d";
str.split(' ');
//['a','b','c','d']
str.split(' ',2);
//['a','b']
split()方法和Array.join()相對應
2.3 大小寫轉換 toLowerCase()、toUpperCase()、toLocaleLowerCase()、toLocaleUpperCase()
toLowerCase()和toUpperCase()是相對應的方法,分別將字串轉成全小寫或全大寫。
var str = "Hello";
str.toLowerCase();
//hello
str.toUpperCase();
//HELLO
toLocaleLowerCase()、toLocaleUpperCase()在中文和英文環境下與前兩個方法的作用一樣,僅在部分特殊語言場景下會使用本地化方式(如土耳其語)。
3. 注意事項
3.1 indexOf()與lastIndexOf()
indexOf()和lastIndexOf()的功能基本一致,都是返回指定文字在字串中出現的下標位置。二者唯一的區別就在於當字串中存在相同字元時的處理方式,通過下面這個例子就很容易理解了。
var str = "hello";
console.log(str.indexOf("l"))
//2 返回指定字元在字串中首次出現的下標(str中包含兩個“l”)
console.log(str.lastIndexOf("l"))
//3 返回指定字元在字串中最後一次出現的下標
3.2 字元大小比較——localCompare()
javascript中字元比較可以直接用“>”或者“<”,但是這種比較是基於字元的Unicode來的。而localCompare()則是結合了本地的排序規則。示例程式碼:
var a = "李";//Unicode=26446
var b = "張";//Unicode=24352
console.log(a<b);
//false "李"的Unicode大於“張”
console.log(a.localCompare(b))
//-1 按拼音順序“李”小於“張”
3.3 search()與indexOf()的區別
search()和indexOf()均能返回字串在字串中首次出現的下標,若沒有匹配的字串則返回-1 。唯一不同的是search()的引數還可以是一個正則表示式,而indexOf()則不允許。