--- 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 ```