第5章 文字列処理

文字列の基本

// 文字列の宣言
let string1 = 'こんにちは';  // シングルクォート
let string2 = "JavaScript"; // ダブルクォート
let string3 = `こんにちは、${string2}!`; // テンプレートリテラル

console.log(string3); // こんにちは、JavaScript!


文字列の連結

let firstName = "太郎";
let lastName = "山田";

// +演算子を使用した方法
let fullName = firstName + " " + lastName; 
console.log(fullName); // 太郎 山田

// テンプレートリテラルを使用した方法
let fullName2 = `${firstName} ${lastName}`; 
console.log(fullName2); // 太郎 山田


文字列のプロパティとメソッド

let str = "    Hello, World!   ";

console.log(str.length); // 20 文字数を取得
console.log(str.toUpperCase()); // HELLO, WORLD! 大文字に変換
console.log(str.trim()); // Hello, World! 両端のスペースを削除


部分文字列の取得

let str = "JavaScript";

console.log(str.charAt(0)); // J 0番目の文字を取得
console.log(str.substring(0, 4)); // Java 0番目から4番目の手前までの部分文字列を取得
console.log(str.slice(-6)); // Script 最後から6文字取得


文字列の検索

let str = "JavaScript is fun!";

console.log(str.indexOf("is")); // 11 "is"が最初に出現する位置
console.log(str.includes("fun")); // true "fun"が含まれるかどうか
console.log(str.startsWith("Java")); // true "Java"で始まるかどうか


文字列の置換

let str = "Hello, Java!";

let newStr = str.replace("Java", "JavaScript");
console.log(newStr); // Hello, JavaScript!


文字列の分割と結合

let str = "Apple,Banana,Cherry";
let fruits = str.split(","); // 文字列を配列に分割

console.log(fruits); // ["Apple", "Banana", "Cherry"]

let newStr = fruits.join(" - "); // 配列を文字列に結合
console.log(newStr); // Apple - Banana - Cherry


文字コードの取得・変換

let str = "あ";

// 文字のUnicodeを取得
console.log(str.charCodeAt(0)); // 12354

// Unicodeから文字に変換
console.log(String.fromCharCode(12354)); // あ


文字列の繰り返し

let echo = "echo ";

console.log(echo.repeat(3)); // echo echo echo 


文字列の埋め込み

let num = "5";

// 指定した長さになるように文字列の前方を埋める
console.log(num.padStart(3, "0")); // 005

// 指定した長さになるように文字列の後方を埋める
console.log(num.padEnd(3, "0")); // 500


文字列の比較

let str1 = "apple";
let str2 = "banana";

console.log(str1.localeCompare(str2)); // -1(str1がstr2よりも前にくる場合)


正規表現を使った文字列の操作

let text = "The year is 2023.";

// match()で正規表現にマッチする部分を取得
console.log(text.match(/\d+/)); // ["2023"]

// search()で正規表現にマッチする部分のインデックスを取得
console.log(text.search(/\d+/)); // 12

// replace()で正規表現にマッチする部分を置換
console.log(text.replace(/\d+/, "2024")); // The year is 2024.


練習問題1.

以下のような文字列の配列が与えられます。配列内の各名前はスペースや大文字、小文字の組み合わせで異なる形式で記述されています。これを正規化して、全て「姓 名」の形式で、先頭だけ大文字となるように変換してください。

const names = ["   tAnaka tarO", "  suzUki KEN", "yamada HANAKO   "];


練習問題2.

与えられた文章の中で、"apple"という単語がいくつ存在するかカウントしてください。

const text = "I have an apple. Apple is delicious. I want another apple!";


練習問題3.

与えられた文字列が次の形式で電話番号として正しいかチェックしてください: XXX-XXXX-XXXX ただし、Xは任意の数字です。

const phoneNumber = "123-4567-8901";