JavaScript String Methods
在 javascript position 都是從 0 開始算起。
一、Finding a position in a String
如果都找不到則傳回 -1。
1、indexOf()
從一字串裡,找尋第一次出現指定字串的起始位置。
語法:string.indexOf(searchvalue[, start])
var str = "0123welcome to the universe."; console.log(str.indexOf("welcome"));
上述範例意思是找尋 str 字串裡,第一次出現「welcome」的起始位置,其結果為 4。
參數 start (選項)表示從指定位置開始搜尋,如下範例
var str = "01welcome9welcome"; console.log(str.indexOf("welcome", 3));
其結果為 10。
2、lastIndexOf()
從一字串裡,找尋最後一次出現指定字串的起始位置。
語法:string.lastIndexOf(searchvalue[, start])
var str = "01she5she9she"; console.log(str.lastIndexOf("she"));
其結果為 10。
參數 start (選項)表示搜尋到指定位置為止,如下範例
var str = "01she5she9she"; console.log(str.lastIndexOf("she",9));
其結果為 6。
3、search()
從一字串裡,找尋第一次出現指定字串的起始位置。
語法:string.indexOf(regex)
var str = "she9she5she10"; console.log(str.search(/she/));
其結果為 0。
search() 方法跟 indexOf() 方法作用一樣,只差別於 search() 方法支援 regular expression。
二、Extracting String Parts
從一字串裡,提取某一部份字串。
其取字串時,一率都是由左往右取。
1、slice()
語法:slice(start[, end])
var str = "01she5she9she"; console.log(str.slice(6));
其結果為 she9she。
說明:從左邊數來第 6 位置往右取字串。
var str = "01she5she9she"; console.log(str.slice(-6));
其結果為 he9she。
說明:從右邊數來第 6 位置往右取字串。
var str = "01she5she9she"; console.log(str.slice(1, 6));
其結果為 1she5。
說明:從左邊數來第 1 位置往右取到第 6 位置前的字串。
var str = "01she5she9she"; console.log(str.slice(1, -3));
其結果為 1she5she9。
說明:從左邊數來第 1 位置往右取到,從右邊數來第 3 位置的字串。
var str = "01she5she9she"; console.log(str.slice(-5, -1));
其結果為 e9sh。
說明:從右邊數來第 5 位置後往右取到,從右邊數來第 1 位置的字串。
2、substring(start[, end])
substring() 方法很像 slice() 方法,其差異為 substring() 方法不接受負位置 (index)。
3、substr(start[, length])
substr() 方法很像 slice() 方法,其差異為 substr() 方法的第二個參數是長度而不是位置 (index)。
var str = "01she5she9she"; console.log(str.substr(-9, 6));
其結果為 e5she9。
說明:從右邊數來第 9 位置後往右取 6 個字元。
三、Extracting String Characters
1、charAt()
用來取第 n 位的字元。
語法:string.charAt(index)
var str = "0123456789"; console.log(str.charAt(5));
其結果為 5。
說明:如果沒取到時,則回傅空字串。
2、charCodeAt()
用來取第 n 位字元的 unicode。
語法:string.charCodeAt(index)
var str = "0123456789"; console.log(str.charCodeAt(0));
其結果為 48。
3、fromCharCode()
用來轉換一 unicode 成一個字元或字串。
語法:string.fromCharCode(n1, n2, ..., nX)
console.log(String.fromCharCode(65));
其結果為 A。
console.log(String.fromCharCode(65, 66, 67));
其結果為 ABC。
4、Property access [ ]
在 ECMAScript 5 (2009),字串可以使用「[]」方式來存取一字元。
語法:string[index]
var str = "0123456789"; console.log(str[5]);
其結果為 5。
說明:
如果沒找到字元時,則回傅 undefined。
四、check
1、startsWith()
用來判斷一字串在開頭是否可找到指定字串。
語法:string.startsWith(searchvalue[, index])
var str = "Hello World!"; console.log(str.startsWith("Hello"));
其結果為 true。
var str = "Hello World!"; console.log(str.startsWith("World", 6));
其結果為 true。
2、endsWith()
用來判斷一字串在結尾是否可找到指定字串。
語法:string.endsWith(searchvalue[, length])
var str = "Hello world, welcome to the universe."; console.log(str.endsWith("universe."));
其結果為 true。
var str = "Hello world, welcome to the universe."; console.log(str.endsWith("world", 11));
其結果為 true。
說明:從開頭取 str 字串裡的 11 個字元( Hello world )來比對,判斷 world 字串是否為這11 個字元的結尾。
3、includes()
用來判斷一字串中是否可找到指定字串。
語法:string.includes(searchvalue[, start])
var str = "Hello, I am Tom"; console.log(str.includes("am"));
其結果為 true。
var str = "Hello, I am Tom"; console.log(str.includes("I", 7));
其結果為 true。
說明:從第 7 個字元開始找,是否可以找到「I」字元。
4、localeCompare()
比較兩字串權重順序。
語法:string.localeCompare(compareString)
從第一個字元開始比,如果原字串順序排在被比字串前面則回傅 -1。
從第一個字元開始比,如果原字串等於被比字串則回傅 0。
從第一個字元開始比,如果原字串順序排在被比字串後面則回傅 1。
var str1 = "cd"; var str2 = "ce"; console.log(str1.localeCompare(str2));
其結果為 -1。
var str1 = "b"; var str2 = "a"; console.log(str1.localeCompare(str2));
其結果為 1。
五、Upper、Lower Case
1、toUpperCase()
將一字串全轉成大寫。
var str = "Hello World!"; console.log(str.toUpperCase());
其結果為 HELLO WORLD!。
2、toLowerCase()
將一字串全轉成小寫。
var str = "Hello World!"; console.log(str.toLowerCase());
其結果為 hello world!。
3、toLocaleLowerCase()
根據主機當前語言環境,將一字串全轉成大寫。
4、toLocaleUpperCase()
根據主機當前語言環境,將一字串全轉成小寫。
六、其他
1、replace()
根據 pattern 找到被比對到的字串,並且替換他。
語法:string.replace(regex, newvalue)
var str = "she hi am hi"; console.log(str.replace(/hi/g, "hello"));
其結果為 she hello am hello
2、match()
根據 pattern 找到所有被比對到的字串,並回傳成陣列。
語法:string.match(regexp)
var str = "she hi am hi"; console.log(str.match(/hi/g));
其結果為 ["hi", "hi"]
var str = "she hi am his him"; console.log(str.match(/\bh[a-z]+/g));
其結果為 ["hi", "his", "him"]
3、split()
根據分離子,把一字串拆成陣列。separator 可以是字元、字串、regular expression。
語法:string.split([separator[, limit]])
var str = "123dd456dd789"; console.log(str.split("dd"));
其結果為 ["123", "456", "789"]
var str = "123dd456dd789"; console.log(str.split());
其結果為 ["123dd456dd789"]
var str = "123dd456dd789"; console.log(str.split("dd", 2));
其結果為 ["123", "456"]
4、trim()
用來移除兩側的空白。
var str = " 1 2 3 4 5 "; console.log(str.trim());
其結果為 1 2 3 4 5
5、String Length
用來取得一字串的字元數。
var str = "12345"; console.log(str.length);
其結果為 5
6、concat()
用來把 n 個字串連接成一個。
語法:string.concat(string1, string2, ..., stringX)
var str1 = "Hello"; var str2 = " "; var str3 = "Tom"; console.log(str1.concat(str2, str3));
其結果為 Hello Tom
7、repeat()
將一字串複製 n 次並回傳。
語法:string.repeat(n)
var str = "good!"; console.log(str.repeat(2));
其結果為 good!good!
8、toString()
將一變數轉為字串型態。
var str = 123; console.log(str.toString());
其結果為 "123"
9、valueOf()
取得一物件的 primitive value
var str = 123; console.log(str.valueOf());
其結果為 123