---
# System prepended metadata

title: 十八、 字串 (string) 類型的內建函式
tags: [JS101, Lidemy心得, 2020七月第三週, 進度筆記, 7/14, JavaScript]

---

# 十八、 字串 (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())

會印出:
![](https://i.imgur.com/UTDoNsZ.png)

如果在 `str.split()` 中輸入 ' ' ， 會分割開來:
    
    var str = 'hey yoyoyoyoyo'
    console.log( str.split(' '))

變成有空格的地方自動分割，成為內含兩個字串元素的陣列。

![](https://i.imgur.com/CanjB15.png)

以 y 來切的話:
![](https://i.imgur.com/4FfbTVq.png)

就會把所有的 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)

---