投稿者 tel | 2012年2月23日

JavaScriptで文字列の任意のインデックスの文字を変える

タイトルが分かりづらいけど、やりたいことは humu の2番目の文字 u を o に変えるような処理。プログラムの問題を解いていて必要になった。
文字列の任意のインデックスの文字を取ってくるのは

var c = 'humu'[1];

みたいな形でできるけど、JavaScriptの文字列は生成したあとに変更はできないらしいので

var s = 'humu'; s[1] = 'o';

といったことをしても文字列 s の値は書き変わらない。(エラーも何もでないのでちょっとはまっていた)

var s = 'humu';

// twitterで教えてもらった方法
console.log(s.slice(0, 1) + 'o' + s.slice(2, 4));

// 置換してみる
console.log(s.replace(/./g, function(i, j) { return j == 1 ? 'o' : i; }));

// 配列に直してみる
var t = s.split('');
t[1] = 'o';
console.log(t.join(''));

// 2番目と似たようなやり方
console.log(s.split('').map(function(i, j) { return j == 1 ? 'o' : i; }).join(''));

たぶん1番目が1番短いし、スマートなやり方だと思う。


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

カテゴリー

%d人のブロガーが「いいね」をつけました。