JavaScriptで文字列を検証する:すべての「a」を「@」に、「i」を「!」に置き換える方法
文字列を唯一の引数として受け取り、その中に含まれるすべての「a」を「@」に、「i」を「!」に置き換えた新しい文字列を返す関数 validate() を作成してみましょう。
これは古典的な for ループの問題の一つです。文字列をインデックスを使って反復処理しながら、条件に応じて文字を置き換え、新しい文字列を構築していくアプローチで解決できます。
関数のコードは以下の通りです。
コード例
const string = 'Hello, is it raining in Amsterdam?';
const validate = (str) => {
let validatedString = '';
for(let i = 0; i < str.length; i++){
if(str[i] === 'a'){
validatedString += '@';
}else if(str[i] === 'i'){
validatedString += '!';
}else{
validatedString += str[i];
};
};
return validatedString;
};
console.log(validate(string));
出力結果
コンソールには以下のように出力されます。
Hello, !s !t r@!n!ng !n Amsterd@m?
別のアプローチ:replace() メソッドを使う
for ループを書かずに、正規表現と replace() メソッドを組み合わせることで、より簡潔に同じ処理を実現することもできます。
const validate = (str) => {
return str.replace(/a/g, '@').replace(/i/g, '!');
};
console.log(validate(string));
正規表現の g フラグ(グローバルマッチ)を指定することで、文字列内のすべての該当文字が置き換えられます。コードが短くなり、可読性も向上するため、実務ではこちらの方法が好まれることも多いでしょう。
どちらの方法でも出力結果は同じになります。処理の仕組みを理解するために for ループ版を、簡潔さを求めるなら replace() 版を選ぶとよいでしょう。
-
JavaScriptで文字列内のすべてのドット(.)を置き換える方法
文字列内のドット(.)を置き換えるには、正規表現でドットをエスケープ(\.)し、replace()メソッドを使用します。ドットのエスケープが必要な理由正規表現において、ドット(.)は「任意の一文字」を表す特殊文字(メタ文字)です。そのため、リテラルのドットとして扱いたい場合は、バックスラッシュ(\)でエスケープする必要があります。また、文字列内のすべてのドットを置き換えるには、正規表現に「g」フラグ(グローバルフラグ)を付けることが重要です。「g」フラグを付けない場合、最初に見つかったドットしか置き換えられません。サンプルコード以下のコードを実行すると、文字列内のすべてのドットをスペースに置き
-
JavaScriptのTextEncoderとTextDecoderとは?文字列とバイト列の相互変換をわかりやすく解説
JavaScriptでは、文字列とバイト列(バイナリデータ)を相互に変換したい場面がよくあります。そんなときに活躍するのが、TextEncoderとTextDecoderという2つの標準組み込みAPIです。本記事では、それぞれの役割と基本的な使い方を、実際に動くサンプルコードとともに解説します。 TextEncoderとは TextEncoderは、指定した文字列をUTF-8形式に変換(エンコード)するためのオブジェクトです。encode()メソッドに文字列を渡すと、変換結果がUint8Array(符号なし8ビット整数の配列)として返されます。 TextDecoderとは TextDecod