---
tags: JavaScript,字符串
---
# JavaScript-字符串大全
## 基礎語法
```javascript=
let company = 'Apple, Google, Meta';
console.log(company[0]); // A
console.log(company.length); // 19 (逗號和空格也算)
```
## index系列
```javascript=
let company = 'Apple, Google, Meta';
console.log(company.indexOf('p')); // 1 回傳第一個 'p' 的 index 值 (從0開始數)
console.log(company.indexOf('b')); // -1 沒有該元素
console.log(company.lastIndexOf('a')); // 18 回傳最後一個 'a' 的 index 值
console.log(company.lastIndexOf('b')); // -1 沒有該元素
console.log(company.charAt(0)); // 輸入 0 得到該位置的字元 'A'
console.log(company.charAt(19)); // (空白) 長度超過了
```
## 截取系列
不會修改原字串
```javascript=
let company = 'Apple, Google, Meta';
// slice
console.log(company.slice(15)); // 'Meta' M的index為15,第二參數不寫就是取到終點
console.log(company.slice(7, 13)); // 'Google' G的index為7,e的index為12 (注意)
console.log(company.slice(-12, -6)); // 'Google' 可輸入負值,將從尾巴起算 (尾巴第一位是-1) e的index為-7 (注意)
console.log(company.slice(1, 0)); // '' 第一參數值較大,則返回空字符串
// substring 用法與slice差不多
console.log(company.substring(15)); // 'Meta' M的index為15,第二參數不寫就是取到終點
console.log(company.substring(7, 13)); // 'Google' G的index為7,e的index為12 (注意)
console.log(company.substring(-100, 5)); // 'Apple' 輸入負數直接被當成0
console.log(company.substring(5, 0)); // 'Apple' 第一參數值較大,則會自動交換
// substr 第二個參數表示選取的長度
// 過時方法不建議用
console.log(company.substr(15)); // 'Meta' M的index為15,第二參數不寫就是取到終點
console.log(company.substr(7, 6)); // 'Google' G的index為7,取6個字母
console.log(company.substr(-12, 6)); // 'Google' 可輸入負數,G的index為-12,取6個字母
```
## 消空白
不需放參數
```javascript=
let company = ' Apple, Google, Meta ';
console.log(company.length); // 23
console.log(company.trim()); // 'Apple, Google, Meta'
console.log(company.trimStart()); // 'Apple, Google, Meta '
console.log(company.trimEnd()); // ' Apple, Google, Meta'
```
## 取代系列
不會修改原字串
須區分大小寫
回傳新字串
```javascript=
let company = 'Apple, Google, Meta';
console.log(company.length); // 19
console.log(company.replace('p', 'q')); // 'Aqple, Google, Meta'
console.log(company.replace(/p/g, 'q')); // 'Aqqle, Google, Meta' 第一參數是正則,不要加''
console.log(company.replace('Apple', 'Orange')); // 'Orange, Google, Meta'
let animal = 'pig dog cat';
console.log(animal.replace(/pig|dog/g, 'X')); // 'X X cat'
let str = 'Hello World';
let newStr = str.replace(/(\w+)\s(\w+)/, function (match, p1, p2) {
return p2 + ' ' + p1;
});
console.log(newStr); // "World Hello"
```
## 大小寫
不需放參數
不會修改原字串
回傳新字串
```javascript=
let company = 'Apple, Google, Meta';
console.log(company.toLowerCase()); // apple, google, meta
console.log(company.toUpperCase()); // APPLE, GOOGLE, META
```
## 是否包含
須區分大小寫
皆回傳 boolean 值
```javascript=
let company = 'Apple, Google, Meta';
console.log(company.includes('G')); // true
console.log(company.includes('Google')); // true
console.log(company.includes('Ge')); // false
console.log('------');
console.log(company.startsWith('A')); // true
console.log(company.startsWith('Apple')); // true
console.log(company.startsWith('ple')); // false
console.log('------');
console.log(company.endsWith('M')); // false
console.log(company.endsWith('a')); // true
console.log(company.endsWith('Meta')); // true
console.log(company.endsWith('ta')); // true
```
## ASCII碼轉換
官網表格
https://tool.oschina.net/commons?type=4
```javascript=
let company = 'Apple, Google, Meta';
console.log(company.charCodeAt(0)); // 65 (A的ASCII碼)
console.log(company.charCodeAt(19)); // NaN (長度超過了)
console.log('------');
console.log(String.fromCharCode(65)); // A
console.log(String.fromCharCode(97)); // a
```
## 頭尾加字元
回傳新字串
```javascript=
let meat = 'beef';
// 參數一為要變成的長度
// 參數二為要加上的內容
console.log(meat.padStart(12,'cook')); // cookcookbeef
console.log(meat.padEnd(12,'cook')); // beefcookcook
console.log(meat.padStart(12)) // beef
console.log(meat.padEnd(12)); // beef
console.log(meat.padEnd(meat.length + 4, 'cook')); // beefcook
```
# 字符串跨資料型別
## 字符串轉數組
分隔符用完就消失
```javascript=
let company = 'Apple, Google, Meta';
console.log(company.split()); // ['Apple, Google, Meta']
console.log(company.split(',')); // (3) ['Apple', ' Google', ' Meta']
console.log(company.split(' ')); // (3) ['Apple,', 'Google,', 'Meta']
console.log(company.split('')); // (19) ['A', 'p', 'p', 'l', 'e', ',', ' ', 'G', 'o', 'o', 'g', 'l', 'e', ',', ' ', 'M', 'e', 't', 'a']
```
## 數組轉字符串
不會修改原數組
```javascript=
let company = ['Apple', 'Google', 'Meta'];
let result1 = company.join(',');
let result2 = company.join(); // 預設會用逗號當分隔符
let result3 = company.join(' ');
let result4 = company.join('');
console.log(result1); // Apple,Google,Meta
console.log(result2); // Apple,Google,Meta
console.log(result3); // Apple Google Meta
console.log(result4); // AppleGoogleMeta
let array = ['a', null, 'b', undefined, 'c'];
let ans = array.join();
console.log(ans); // a,,b,,c
```