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