Stringオブジェクト
const str1 = 'abcdefghijkl'
const str2 = 'abcabcabcabc'
// # indexの検索
// 前方から検索
console.log(str1.indexOf('e')) // 4
// 後方から検索
console.log(str1.lastIndexOf('e')) // 4
// 見つからなければ-1を返す
console.log(str1.indexOf('m')) // -1
// 指定したindexより前方を検索
console.log(str1.indexOf('e', 2)) // 4
// 指定したindexより後方を検索
console.log(str1.lastIndexOf('e', 4)) // 4
// 指定した文字列で始まるか
console.log(str1.startsWith('a')) // true
console.log(str1.startsWith('b')) // false
// 指定した文字列で終わるか
console.log(str1.endsWith('l')) // true
console.log(str1.endsWith('k')) // false
// 指定した文字列が含まれているか
console.log(str1.includes('efg')) // true
// # 抽出
// index位置の文字を抽出
console.log(str1.charAt(4)) // "e"
// startからend-1までの文字抽出
console.log(str1.slice(1, 3)) // "bc"
console.log(str1.substring(1, 3)) // "bc"
// startからend文字分を抽出
console.log(str1.substr(1, 3)) // "bcd"
// start>endの場合
// 空文字を返す
console.log(str1.slice(3, 1)) // ""
// endからstart-1までの文字抽出
console.log(str1.substring(3, 1)) // "bc"
// startからend文字分を抽出
console.log(str1.substr(3, 1)) // "d"
// start/endが負数の場合
// 後方からの文字数として扱う
console.log(str1.slice(-3, -1)) // "jk"
console.log(str1.slice(1, -9)) // "bc"
console.log(str1.substr(-3, 2)) // "lk"
// 負数は0とみなす
console.log(str1.substring(-3, 2)) // "ab"
console.log(str1.substring(2, -2)) // "ab"
// # 分割
console.log(str2.split('c')) // ["ab", "ab", "ab", "ab", ""]
console.log(str2.split('c', 2)) // ["ab", "ab"]
// # 連結
console.log(str1.concat('mn')) // "abcdefghijklmn"