塩焼きブログ

塩焼きに関しての研究内容を公開しています

JavaScriptでの文字列操作覚書

この文字列を操作していく

var text = 'I\'m Mikan. Hello World.';

charAt()で指定した位置の文字列を一文字抽出する。ECMAScript5では角括弧でも同様の処理を行うこともできるが、IEでのサポートが微妙だそうだ。IEの詳しいバージョン調査が必要となるのでここでは割愛する。

console.log(text.charAt(4));
// M
console.log(text[4]);
// M

5文字目を含めて6, 7, 8, 9と9文字目まで切り出す

console.log(text.substring(4, 9));
console.log(text.slice(4, 9));
// Mikan
// Mikan

最後の文字列を含めて末尾から6文字を切り出す

console.log(text.slice(-6));
// World.

指定した文字列の0から始まる開始位置を取得する。ただし同じ文字列がある場合は最初に出現した文字列の開始位置を取得する。

console.log(text.indexOf('Hello'));
// 11

16文字を含めた位置から指定した文字列を開始位置を取得することもできる。無視したい文字列が先頭に含まれる時に利用する。

console.log(text.indexOf('o', 16));
// 18

指定した文字列の0から始まる開始位置を末尾から取得する。つまり同じ文字列がある場合は最後から探して最初に出現した開始位置を取得する。

console.log(text.lastIndexOf('o'));
// 18

文字列を指定した文字列で区切って配列にする

array = text.split(' ');
console.log(array);
// [ 'I\'m', 'Mikan.', 'Hello', 'World.' ]

正規表現を利用した文字列の置き換え

console.log(text.replace(/Mikan|World/, 'Grape'));
// I'm Grape. Hello World.
console.log(text.replace(/Mikan|World/g, 'Grape'));
// I'm Grape. Hello Grape.

ちなみにこういう正規表現RegExpオブジェクトと言うそうで、変数にも格納できる。

/Mikan|World/g

文字列を大文字に変換する

console.log(text.toUpperCase());
// I'M MIKAN. HELLO WORLD.

文字数はlengthプロパティで調べられる。エスケープシーケンスのバックスラッシュなども実行された状態で数えてくれる。

console.log(text.length);
// 23

JavaScriptでの文字列は不変だそうだ。したがって上記の流れで元のtextが変更されることは無い。Rubyなどにある破壊的メソッドみたいなものは、上記の中には無いということだろう。

var text = 'I\'m Mikan. Hello World.';
console.log(text.charAt(4));
console.log(text.substring(4, 9));
console.log(text.slice(4, 9));
console.log(text.slice(-6));
console.log(text.indexOf('Hello'));
console.log(text.indexOf('o', 16));
console.log(text.lastIndexOf('o'));
console.log(text.split(' '));
console.log(text.replace(/Mikan|World/, 'Grape'));
console.log(text.replace(/Mikan|World/g, 'Grape'));
console.log(text.toUpperCase());
console.log(text.length);
// M
// Mikan
// Mikan
// World.
// 11
// 18
// 18
// [ 'I\'m', 'Mikan.', 'Hello', 'World.' ]
// I'm Grape. Hello World.
// I'm Grape. Hello Grape.
// I'M MIKAN. HELLO WORLD.
// 23