參考資料 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