常用到的內建函式。
String
String.charCodeAt(n)
第 n 個字元儲存的 ASCII 碼
1 2 3 4
| const str = 'abc' console.log(str.charCodeAt(0)) console.log(str.charCodeAt(1)) console.log(str.charCodeAt(2))
|
String.FromCharCode(n)
轉換成對應的字元(n = ASCII)
1 2 3 4 5 6
| const ASCII1 = 97 const ASCII2 = 98 const ASCII3 = 99 console.log(String.fromCharCode(ASCII1)) console.log(String.fromCharCode(ASCII2)) console.log(String.fromCharCode(ASCII3))
|
String.toUpperCase(str)
字串轉大寫
String.toLowerCase(str)
字串轉小寫
「非英文字母」的字元不會做轉換。
1 2 3 4 5 6
| const Upper = 'abc'.toUpperCase() const Lower = 'ABC'.toLowerCase() const NotEn = '@123'.toUpperCase() console.log(Upper) console.log(Lower) console.log(NotEn)
|
String.endsWith(string)
結尾字串跟 string 相不相同。
1 2 3 4 5 6 7
| const str = 'abc' console.log(str.endsWith('c')) console.log(str.endsWith('bc')) console.log(str.endsWith('abc')) console.log(str.endsWith('abc ')) console.log(str.endsWith(' abc')) console.log(str.endsWith(''))
|
String.padEnd(string, targetLength, padSting)
把填充文字塞到原字串,直到結果長度為止
補充:
- 如果沒有填充文字,自動以「空格」來代替
- 如果填充文字為「空字串」,回傳原字串
- 如果「結果長度 <= 原字串長度」,回傳原字串
1 2 3 4 5 6
| const str = 'abc' console.log(str.padEnd(10,'a')) console.log(str.padEnd(10,'dog')) console.log(str.padEnd(2,'abbc')) console.log(str.padEnd(10,'')) console.log(str.padEnd(10))
|
String.indexOf(string)
搜尋 string 出現位置的索引值(第一個字元),不存在則回傳 -1
1 2 3 4 5 6 7
| const str = 'hello how are you today.' const n1 = str.indexOf('hello') const n2 = str.indexOf('today') const n3 = str.indexOf('tomorrow') console.log(n1) console.log(n2) console.log(n3)
|
String.includes(str)
看 String 有沒有包含 str,有的話回傳 true,沒有回傳 false
補充:
- 有分大小寫
- 在 String 有值的前提下,str 代空字串永遠回傳 true
1 2 3 4 5 6
| const str = 'abc' console.log(str.includes('a')) console.log(str.includes('ab')) console.log(str.includes('abc')) console.log(str.includes('d')) console.log(str.includes(''))
|
小技巧:可以反向操作,判斷傳入的 str 是否「是空字串」
1 2 3 4
| const empty = ''
console.log(empty.includes('abc')) console.log(empty.includes(''))
|
甚至也可以用 NOT (!)
來判斷傳入的 str 是否「不是空字串」:
1 2 3 4
| const empty = ''
console.log(!(empty).includes('abc')) console.log(!(empty).includes(''))
|
String.replace(str, replace)
把 str 換成 replace。只會把第一個符合的對象給替換,
1 2 3
| const str = 'yoyoyoyooooyoyyyo' const n1 = str.replace('y', '!') console.log(n1)
|
如果要把每個符合的都改掉得用 regExp
:
1 2 3
| const str = 'yoyoyoyooooyoyyyo' const n1 = str.replace(/y/g, '!') console.log(n1)
|
String.replaceAll(str, replace)
把所有的 str 換成 replace。
1 2 3
| const str = 'yoyoyoyooooyoyyyo' const n1 = str.replaceAll('y', '!') console.log(n1)
|
String.split(separator)
對字串分割,回傳一個 Array
1 2 3
| const str = '1y2y3y4y5' const n1 = str.split('y') console.log(n1)
|
注意一下如果 separator
的前面沒有字串,會自動把空字串填入陣列:
(因為分割的位置還沒有任何的字元)
1 2 3
| const str = 'yyyy1y2y3y4y5y' const n1 = str.split('y') console.log(n1)
|
另外,separator
也可以是正則表達式:
1 2 3
| const str = 'yo2yoy3oyo1o' const n1 = str.split(/[0-9]/) console.log(n1)
|
String.trim
去掉字串頭尾的空格(不管有幾個)
1 2 3
| const str = ' yooooo ' const n1 = str.trim() console.log(n1)
|
String.substring(start, end)
回傳指定範圍的字串(不含 end)
補充:跟 slice 的差別在 substring 不可以指定「負值」
小技巧:不指定 end 的話會自動算到最後一個字
1 2 3 4 5
| const str = 'abcdefg' const result1 = str.substring(1, 5) const result2 = str.substring(3) console.log(result1) console.log(result2)
|
String.slice(start, end)
回傳指定範圍的字串(不含 end)
1 2 3
| const str = 'Today is a good day'; console.log(str.slice(0, 5)) console.log(str.slice(6));
|
小技巧:輸入負數代表「從後面數來第 n 個字」
1 2 3
| const str = 'Today is a good day'; console.log(str.slice(0, -4)) console.log(str.slice(-3))
|