JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで文字列内の「i」と「a」を置き換える関数の実装方法

はじめに

本記事では、文字列を唯一の引数として受け取り、その中に含まれるすべての「i」を「!」に、「a」を「@」に置き換えた新しい文字列を返すJavaScript関数の実装方法を解説します。

これは、forループで文字列をインデックスを使って1文字ずつ走査し、進みながら新しい文字列を組み立てていく定番の練習問題です。文字列操作の基礎を身につけるのに最適な題材と言えるでしょう。

実装コード

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));

コードの解説

  • まず、対象となる元の文字列を定数 string として用意します。
  • validate 関数は引数 str を受け取り、結果を格納するための空文字列 validatedString を初期化します。
  • forループで文字列の先頭から末尾まで1文字ずつ確認します。
  • 文字が「a」であれば「@」を、「i」であれば「!」を結果に追加し、それ以外の場合は元の文字をそのまま追加します。
  • ループが完了したら、組み立てた文字列を return で返します。

実行結果

上記のコードをコンソールで実行すると、次のような出力が得られます。

Hello, !s !t r@!n!ng !n Amsterd@m?

出力を見ると、「i」がすべて「!」に、「a」がすべて「@」に置き換えられていることが確認できます。

代替手段:正規表現を使った簡潔な実装

同じ処理は、replace メソッドと正規表現を組み合わせることで、より短く書くことも可能です。

const validate = (str) => str.replace(/a/g, '@').replace(/i/g, '!');

正規表現を使えばループを明示的に記述する必要がなく、コードがシンプルで読みやすくなります。ただし、プログラミングの学習段階では、forループによる1文字ずつの処理の仕組みを理解しておくことも重要です。

  1. バニラJavaScriptで文字列を大文字・小文字に変換する方法

    JavaScriptのStringオブジェクトには、文字列を大文字や小文字に変換できる便利なメソッドが標準で用意されています。外部ライブラリを使わないバニラJavaScriptだけで、toUpperCase()とtoLowerCase()という2つのメソッドを呼び出すだけで簡単に実現できます。 toUpperCase() – 文字列を大文字に変換する toUpperCase()は、文字列内のすべての英字を大文字に変換した新しい文字列を返します。元の文字列は変更されません。 コード例 let str = Hello World; let upper = str.toUpperCase(); co

  2. JavaScriptのTextEncoderとTextDecoderとは?文字列とバイト列の相互変換をわかりやすく解説

    JavaScriptでは、文字列とバイト列(バイナリデータ)を相互に変換したい場面がよくあります。そんなときに活躍するのが、TextEncoderとTextDecoderという2つの標準組み込みAPIです。本記事では、それぞれの役割と基本的な使い方を、実際に動くサンプルコードとともに解説します。 TextEncoderとは TextEncoderは、指定した文字列をUTF-8形式に変換(エンコード)するためのオブジェクトです。encode()メソッドに文字列を渡すと、変換結果がUint8Array(符号なし8ビット整数の配列)として返されます。 TextDecoderとは TextDecod