Stringオブジェクト(初心者向け・やさしく詳しく)
String オブジェクト周りを初心者向けにやさしく、かつ実践で役に立つように丁寧にまとめます。コード例を交えて説明するので、コピペして試してみてください。
1. 「文字列」は2種類ある:プリミティブ値 と Stringオブジェクト
- 普段使う
"hello"や'abc'は プリミティブな文字列(単なる値)です。
例:let s = "こんにちは"; new String("こんにちは")のようにnewを付けて作るのが Stringオブジェクト(ラッパー)。内部的にはオブジェクトになります。
例:let obj = new String("こんにちは");
ポイント:ほとんどの場合はプリミティブな文字列(リテラル)を使えば良く、new String(...) を使う必要はありません。
2. なぜプリミティブでもメソッドが使えるの?
let s = "hello";
console.log(s.length); // 5
console.log(s.toUpperCase()); // "HELLO"
JavaScript- いったん内部で一時的に Stringオブジェクトとして“ラップ”され、メソッドが使えるようになります(自動的に行われるので気にしなくてOK)。
3. valueOf() と toString() の違い
valueOf():Stringオブジェクトからプリミティブな文字列値を取り出す。toString():オブジェクトを文字列として表現したものを返す。- Stringの場合、両者はほとんど同じ結果になります。
let obj = new String("北海道");
console.log(obj.valueOf()); // "北海道"
console.log(obj.toString()); // "北海道"
JavaScript4. typeof と比較(よくある落とし穴)
let a = "abc";
let b = new String("abc");
console.log(typeof a); // "string"
console.log(typeof b); // "object"
JavaScriptnew String(...)はオブジェクトなのでtypeofは"object"になります。- 等値比較にも注意:
console.log(a == b); // true (== は型変換して比較)
console.log(a === b); // false(型も値も同じか確かめる厳密比較)
JavaScript教訓:文字列はプリミティブで扱い、=== を使う習慣をつけるとバグが減ります。
5. よく使うStringメソッド(初心者が覚えると便利なもの)
length— 文字列の長さ(プロパティ)let n = "abc".length; // 3charAt(index)— 指定位置の文字を取得"abc".charAt(1) // "b"slice(start, end)/substring(start, end)— 部分文字列を取り出すindexOf(sub)/lastIndexOf(sub)— 部分文字列の位置を調べるtoLowerCase()/toUpperCase()— 大文字小文字変換trim()— 前後の空白を除くsplit(separator)— 分割して配列にするreplace(pattern, replacement)— 文字列置換(正規表現対応)
let s = " Hello, JavaScript! ";
console.log(s.trim().toUpperCase()); // "HELLO, JAVASCRIPT!"
console.log("a,b,c".split(",")); // ["a","b","c"]
JavaScript6. new String() を使うときの問題点
- 型が
"object"なので===比較やtypeofの期待と違う結果になります。 - 真偽値チェックで意図しない動作をすることがある:
let o = new String("");
if (o) console.log("truthy"); // 表示される(空文字でもオブジェクトは truthy)
JavaScriptつまり new String("") は空文字でも if の条件では真と扱われます — これは普通の "" と違う振る舞い。
結論:特別な理由がない限り new String() は避ける。
実践的な注意点(まとめ)
- 文字列比較は基本
===(厳密比較)を使う。 - 文字列操作はプリミティブ(リテラル)で行う。
- 複数行文字列にはテンプレートリテラル(
`...`)が便利。 - 文字列の長さは
length、部分取り出しはslice/substringが多用される。 - 正規表現を使えば高度な検索や置換ができる(中級以降の学習項目)。
練習問題
- 文字列
"Tokyo 2025"の先頭の 5 文字を取り出して表示しなさい。
答え例:console.log("Tokyo 2025".slice(0, 5)); // "Tokyo" " apple , banana , cherry "をカンマで分割し、前後の空白を取り除いた配列を作りなさい。
答え例:
let s = " apple , banana , cherry ";
let arr = s.split(",").map(item => item.trim());
console.log(arr); // ["apple", "banana", "cherry"]
JavaScriptnew String("hi")と"hi"を===で比較するとどうなる? なぜ?
答え:false。片方はオブジェクト、片方はプリミティブなので型が異なるため。
参考のコツ(初心者が次に学ぶと良いこと)
- 正規表現(
/pattern/)での検索・置換を学ぶと強力。 - テンプレートリテラル(
`Hello ${name}`)で可読性の高い文字列を作る。 - 文字エンコーディング(UTF-16, 絵文字の取り扱い)は落とし穴があるので中級で学ぶ。

