# 十八、 字串 (string) 類型的內建函式
###### tags: `JavaScript` `JS101` `2020七月第三週` `進度筆記` `Lidemy心得` `7/14`
---
## JS 內建字串相關函式
### 1. 要大寫呢? 還是小寫呢?
可以把字串變大寫或是小寫。
`toUpperCase` 的情況:
var a = 'abc'.toUpperCase()
console.log(a)
將字串變大寫~
`toLowerCase` 的情況:
var a = 'ABC'.toLowerCase()
console.log(a)
將字串變小寫,如果字串內有符號將會忽略。
---
## 2. 想要拿就要動手拿
如何得到字串所代表的數字為多少 ?
`String.charCodeAt()`
ASCII code : 字串在電腦內有對應的數字,實際存取的值。
var a = 'S'
var aCode = a.charCodeAt(0)
// charCodeAt() 後面接字串位置,如 0 表示第一個位置的 'S' ;
console.log(aCode)
會印出 S 這個字串為數字 83 , 英文字母對應的數字都有順序,是連續的,中間不會有特殊符號。
如 A=>65 , a=>97 , 則 B=> 66 , b=>98 。
---
## 3. 有值就有義
因此也可以把數字變成代表的字串值 , `.fromCharCode` :
var a = 'S'
var aCode = a.charCodeAt(0)
var Str = String.fromCharCode(83)
console.log(aCode)
console.log(Str)
會印出 83 和 S , 因此也可以應用在小寫轉大寫:
var a = 'g'
var aCode = a.charCodeAt(0)
var Str = String.fromCharCode(103-32)
// var Str = String.fromCharCode(aCode-32) 比較聰明的做法應該是這樣;
console.log(aCode)
console.log(Str)
另一種:
var a = 'g'
var aCode = a.charCodeAt(0)
var Str = String.fromCharCode(aCode-('g'.charCodeAt(0) - 'G'.charCodeAt(0)))
// 可以是 var Str = String.fromCharCode(aCode-(aCode - 'G'.charCodeAt(0)))
console.log(Str)
有些程式語言可以用兩個字串相減來得到差距後回傳。
---
## 4. 來比誰大
字串可以比大小:
var char = 'g'
console.log(char >= 'a')
g 的順位比較大。
另外一種應用在邏輯運算:
var char = 'g'
console.log(char >= 'a' && char <= 'z')
g > a , 而 g < z 所以是 true 值。
利用這方式可以判斷順位大小,也可以應用在判斷大寫:
var char = 'g'
console.log(char >= 'A' && char <='Z')
false , 小寫預設比大寫小~
換成大寫 A 到 Z 均為 true 。
---
## 5. 尋找外星人到底存不存在
用 `str.indexOf('hello')` 找尋某個字串存在與否:
var str = 'Hello World ! ZA WARUDO !'
var index = str.indexOf('WARUDO')
console.log(index)
會印出 17 ,第 17 個字就是 WARUDO (會省略符號) 。
找一個不存在的值就會是 -1 , 即 index < 0 表示不存在。
---
## 6. 取代了心靈的空虛
可以取代字串的方法:
var str = 'Hello World ! ZA WARUDO !'.replace('Hello World ! ZA WARUDO !', 'NIGARO JOTARO')
console.log(str)
就會是 NIGARO JOTARO 。
這比較適用於第一個且單一個字串替換,如 y 換成 ! , 或是把某個字換成其他字。
如果是整個取代:
/你要換的字串/g
var str = 'hey yoyoyoyoyo'.replace(/y/g, '!!!!')
console.log(str)
g 是 global 表示全部替換。
---
## 7. 次元切割刀
可以把單字切開,切成陣列,並回傳陣列:
var str = 'hey yoyoyoyoyo'
console.log( str.split())
會印出:

如果在 `str.split()` 中輸入 ' ' , 會分割開來:
var str = 'hey yoyoyoyoyo'
console.log( str.split(' '))
變成有空格的地方自動分割,成為內含兩個字串元素的陣列。

以 y 來切的話:

就會把所有的 y 都取代掉,並轉換成陣列內帶有多個字串元素。
常用在 csv 格式,用逗號來分割,如:
var str = 'data1, data2, data3, data4'
console.log( str.split(','))
會比單一處理字串好,可以處理這個陣列內的各個字串。
## 8. 去掉空格的方法
假設字串內有空格,想去掉的話可以用 `str.trim()` 表示:
var str = ' data1, data2, data3, data4 '
console.log(str.trim())
會把前後空格(不管多少個)都去掉。
進階用法,跟迴圈搭配:
var str = 'data1,data2,data3,data4'
console.log(str.length)
for(var i=0; i<str.length; i++) {
console.log(str[i])
}
會把所有單字列在直的一行。
[來源資料: MDN 字串操控補充](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)
---