跟字串有關的內建函式

常用到的內建函式。

String

String.charCodeAt(n) 第 n 個字元儲存的 ASCII 碼

1
2
3
4
const str = 'abc'
console.log(str.charCodeAt(0)) // 97
console.log(str.charCodeAt(1)) // 98
console.log(str.charCodeAt(2)) // 99

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)) // a
console.log(String.fromCharCode(ASCII2)) // b
console.log(String.fromCharCode(ASCII3)) // c

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) // ABC
console.log(Lower) // abc
console.log(NotEn) // @123

String.endsWith(string) 結尾字串跟 string 相不相同。

1
2
3
4
5
6
7
const str = 'abc'
console.log(str.endsWith('c')) // true
console.log(str.endsWith('bc')) // true
console.log(str.endsWith('abc')) // true
console.log(str.endsWith('abc ')) // false
console.log(str.endsWith(' abc')) // false
console.log(str.endsWith('')) // true

String.padEnd(string, targetLength, padSting) 把填充文字塞到原字串,直到結果長度為止

補充:

  • 如果沒有填充文字,自動以「空格」來代替
  • 如果填充文字為「空字串」,回傳原字串
  • 如果「結果長度 <= 原字串長度」,回傳原字串
1
2
3
4
5
6
const str = 'abc'
console.log(str.padEnd(10,'a')) // 'abcaaaaaaa'
console.log(str.padEnd(10,'dog')) // 'abcdogdogd'
console.log(str.padEnd(2,'abbc')) // 'abc'
console.log(str.padEnd(10,'')) // 'abc'
console.log(str.padEnd(10)) // 'abc '

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) // 0
console.log(n2) // 18
console.log(n3) // -1

String.includes(str) 看 String 有沒有包含 str,有的話回傳 true,沒有回傳 false

補充:

  • 有分大小寫
  • 在 String 有值的前提下,str 代空字串永遠回傳 true
1
2
3
4
5
6
const str = 'abc'
console.log(str.includes('a')) // true
console.log(str.includes('ab')) // true
console.log(str.includes('abc')) // true
console.log(str.includes('d')) // true
console.log(str.includes('')) // true

小技巧:可以反向操作,判斷傳入的 str 是否「是空字串」

1
2
3
4
const empty = ''
// 意思是說 abc 跟 '' 是否在「空字串」裡面?
console.log(empty.includes('abc')) // false
console.log(empty.includes('')) // true

甚至也可以用 NOT (!) 來判斷傳入的 str 是否「不是空字串」:

1
2
3
4
const empty = ''
// 意思是說 abc 跟 '' 是否在「非空字串」裡面?
console.log(!(empty).includes('abc')) // true
console.log(!(empty).includes('')) // false

String.replace(str, replace) 把 str 換成 replace。只會把第一個符合的對象給替換,

1
2
3
const str = 'yoyoyoyooooyoyyyo'
const n1 = str.replace('y', '!')
console.log(n1) // !oyoyoyooooyoyyyo

如果要把每個符合的都改掉得用 regExp

1
2
3
const str = 'yoyoyoyooooyoyyyo'
const n1 = str.replace(/y/g, '!')
console.log(n1) // !o!o!o!oooo!o!!!o

String.replaceAll(str, replace) 把所有的 str 換成 replace。

1
2
3
const str = 'yoyoyoyooooyoyyyo'
const n1 = str.replaceAll('y', '!')
console.log(n1) // !o!o!o!oooo!o!!!o

String.split(separator) 對字串分割,回傳一個 Array

1
2
3
const str = '1y2y3y4y5'
const n1 = str.split('y')
console.log(n1) // [ '1', '2', '3', '4', '5' ]

注意一下如果 separator 的前面沒有字串,會自動把空字串填入陣列:

(因為分割的位置還沒有任何的字元)

1
2
3
const str = 'yyyy1y2y3y4y5y'
const n1 = str.split('y')
console.log(n1) // [ '', '', '', '', '1', '2', '3', '4', '5', '']

另外,separator 也可以是正則表達式:

1
2
3
const str = 'yo2yoy3oyo1o'
const n1 = str.split(/[0-9]/)
console.log(n1) // [ 'yo', 'yoy', 'oyo', 'o' ]

String.trim 去掉字串頭尾的空格(不管有幾個)

1
2
3
const str = '    yooooo   '
const n1 = str.trim()
console.log(n1) // 'yooooo'

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) // bcde
console.log(result2) // defg

String.slice(start, end) 回傳指定範圍的字串(不含 end)

1
2
3
const str = 'Today is a good day';
console.log(str.slice(0, 5)) // Today
console.log(str.slice(6)); // is a good day

小技巧:輸入負數代表「從後面數來第 n 個字」

1
2
3
const str = 'Today is a good day';
console.log(str.slice(0, -4)) // Today is a good
console.log(str.slice(-3)) // day
字元是可以比大小的 把數字轉字串的三種方法
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×