string 類型的內建函式


Posted by saffran on 2021-02-05

參考資料 String

toUpperCase() 小寫變大寫

只有「小寫字母」才會被 toUpperCase() 轉成大寫

因此,在做題目時,根本不需要去檢查「是否為小寫字母」

  • 原本是符號:toUpperCase() 不會改變它
  • 原本是大寫:toUpperCase() 不會改變它
    var a = 'Fancy!!'.toUpperCase()
    console.log(a)
    // output: FANCY!!
    

toLowerCase() 大寫變小寫

只有「大寫字母」才會被 toLowerCase() 轉成小寫

因此,在做題目時,根本不需要去檢查「是否為大寫字母」

  • 原本是符號:toLowerCase() 不會改變它
  • 原本是小寫:toLowerCase() 不會改變它
    var a = 'ALMOND!!'.toLowerCase()
    console.log(a)
    // output: almond!!
    

轉換大小寫的另一種方式

得知字母的 ASCII Code charCodeAt()

每個字母、符號存在電腦內,都會有一個對應的數字,就叫做它的 ASCII Code

  • 首先,先用 charCodeAt(0) 來得知「大寫 A」的 ASCII Code 是 65
    charCodeAt(0) 的 0 是代表「字串 'A' 的第一個位置的字」,也就是 A
    ```javascript=
    var str = 'A'
    var code = str.charCodeAt(0)

console.log(code)
// output: 65

* 再用 `charCodeAt(0)` 來得知「小寫 a」的 ASCII Code 是 97
```javascript=
var str = 'a'
var code = str.charCodeAt(0)

console.log(code)
// output: 97

大小寫字母之間的 ASCII Code 差距是 32

97(小寫 a)- 65(大寫 a)= 32

把 ASCII Code 轉成字母 String.fromCharCode()

String.fromCharCode() 可以把 ASCII Code 轉成「它所代表的字母 or 符號」

因此,如果我想把「小寫 h」轉成「大寫 H」

  • 先取得「小寫 h」的 ASCII Code
  • 把「小寫 h 的 ASCII Code」減 32,就會是「大寫 H 的 ASCII Code」
  • 再用 String.fromCharCode() 把「大寫 H 的 ASCII Code」轉成字母即可
var str = 'h'
var code = str.charCodeAt(0)
var upperStr = String.fromCharCode(code - 32)

console.log(upperStr)
// output: H

判斷字元是「小寫 or 大寫」

字串可以用「ASCII Code」來比大小,也就是「ASCII Code 數字的排序」

範例一:
回傳 true,代表「字串'h'」會介於「字串'a'」和「字串'z'」之間,因此可以判斷:變數 char 是小寫字母

var char = 'h'
console.log(char >= 'a' && char <= 'z')
// output: true

範例二:
回傳 false,代表「字串'h'」沒有介於「字串'a'」和「字串'z'」之間,因此可以判斷:變數 char 不是小寫字母

var char = 'H'
console.log(char >= 'a' && char <= 'z')
// output: false

indexOf() 判斷單字是否存在

indexOf() 可以判斷:在一個字串裡面,have 這個單字是否存在?

如果單字存在,就會回傳「第一個字母的 index 值」

如果有 have 這個單字的話,就會回傳 have 這個單字的第一個字母:h 的 index 值

index 從 0 開始計算,空格、符號也都算一個 index

var str = 'May I have a coffee'
var index = str.indexOf('have')

console.log(index)
// output: 6

如果單字不存在,就會回傳一個「負數」

indexOf() 回傳的值如果 < 0,就代表「have!!」並不存在

var str = 'May I have a coffee'
var index = str.indexOf('have!!')

console.log(index)
// output: -1

replace() 取代字串

例如:我想要把字串中的 'May' 換成 '!!!'

var str = 'May I have a coffee'.replace('May', '!!!')
console.log(str)
// output: !!! I have a coffee

注意!當我要把 'e' 換成 '!!!',就只會把「第一個 e」換掉,後面的 e 都不會受影響

只會 match 到「第一個」

var str = 'May I have a coffee'.replace('e', '!!!')
console.log(str)
// output: May I hav!!! a coffee

把全部的 'e' 都換成 ‘!!!’

如果要把全部的 'e' 都換成 ‘!!!’,就要使用 RegExp(Regular Expression 正規表達式)

這個 RegExp 是「另一種尋找字串的方法」:
/e/g 的 g 就是 global 的意思--> 會 globally 地去 match 到「每一個」有對到的字元

var str = 'May I have a coffee'.replace(/e/g, '!!!')
console.log(str)
// output: May I hav!!! a coff!!!!!!

split() 把字串切割成陣列

split() 會回傳一個陣列

沒有 separator 參數

如果「沒有寫 separator 參數」或是「字串裡面不存在 separator 參數」,那麼回傳的陣列就會是:只有一個元素,這個元素就是「原本的字串」

var str = 'May I have a coffee'
console.log(str.split())
// output: [ 'May I have a coffee' ]

傳入 separator 參數

可以傳一個 separator 參數,代表:要用什麼來切割
例如:
用一個空格 ' ' 來切割,就會回傳一個「有 5 個元素的陣列」

var str = 'May I have a coffee'
console.log(str.split(' '))
// output: [ 'May', 'I', 'have', 'a', 'coffee' ]

'a' 來切割,就會回傳一個「有 4 個元素的陣列」(a 就不見了)

var str = 'May I have a coffee'
console.log(str.split('a'))
// output: [ 'M', 'y I h', 've ', ' coffee' ]

trim() 去除最前面、最後面的空格

trim() 可以去除掉「字串最前面、最後面的所有空格」

var str = '   May I have a coffee       '
console.log(str.trim())
// output: May I have a coffee

string 也可使用某些「array 的內建函式」

slice() 擷取字串的某個部份

  • slice() 會回傳另一個新的 string
  • 原本的 string 並不會被改變
    let str = 'penguin'
    let newStr = str.slice(2, 5)
    console.log(newStr)
    // output: ngu
    

#javascript







Related Posts

#1 擬訂計畫

#1 擬訂計畫

Github Deploy Key && PATs

Github Deploy Key && PATs

讀書筆記-JavaScript技術手冊2: 基本語法(型別、變數、運算)

讀書筆記-JavaScript技術手冊2: 基本語法(型別、變數、運算)


Comments