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

JavaScriptで配列に存在する文字以外を、文字列内のすべての文字から置換する方法

今回は、次のような関数を作成することを考えてみましょう。

replaceChar(str, arr, [char])

この関数は、文字列 str のうち、配列 arr に存在しないすべての文字を、省略可能な引数 char で置き換えます。char が指定されていない場合は、「*」に置き換える仕様です。

関数の仕様

  • str: 置換対象となる元の文字列
  • arr: 残したい文字の一覧(文字の配列)
  • char(省略可能): 置き換えに使用する文字。未指定の場合は「*」が使われます

実装コード

それでは、実際のコードを見てみましょう。

サンプルコード

const arr = ['a', 'e', 'i', 'o', 'u'];
const text = 'I looked for Mary and Samantha at the bus station.';
const replaceChar = (str, arr, char = '*') => {
    const replacedString = str.split("").map(word => {
        return arr.includes(word) ? word : char;
    }).join("");
    return replacedString;
};
console.log(replaceChar(text, arr));

処理の流れ

このコードでは、以下の手順で処理を行っています。

  1. split(""): 文字列を1文字ずつに分解して配列化します。
  2. map(): 各文字に対して、配列 arr に含まれているかどうかを includes() で判定します。含まれていればそのまま残し、含まれていなければ char に置き換えます。
  3. join(""): 処理後の文字を再び連結して、1つの文字列として返します。

なお、デフォルト引数 char = '*' を使うことで、第3引数が省略された場合でも自動的に「*」が適用される点がポイントです。

出力結果

このコードをコンソールで実行すると、以下のように出力されます。

***oo*e***o***a***a****a*a***a*a****e**u****a*io**

母音(a, e, i, o, u)だけが元の文字のまま残り、それ以外の文字がすべて「*」に置き換えられていることが確認できます。

  1. JavaScriptの配列から最も長い文字列をすべて検索・取得する方法

    以下のような文字列の配列があったとしましょう。const arr = [ iLoveProgramming, thisisalsoastrig, Javascriptisfun, helloworld, canIBeTheLongest, Laststring ];このような配列を受け取って、最も長い文字列をすべて取り出すJavaScript関数を作成します。最長の文字列が複数存在する場合も、漏れなくすべて取得できるのがポイントです。関数は最終的に、最長の文字列だけを要素として含む新しい配列を返します。コード例reduceメソッドを使った実装は次のとおりです。 {

  2. Javaで特定の単語を除いてファイル内のすべての文字を「#」に置き換えるプログラム

    Javaでファイルの内容を処理し、特定の単語だけを残して他のすべての文字を「#」に置き換えたい場面は少なくありません。本記事では、split()メソッドとreplaceAll()メソッドを組み合わせて、この処理を実現する方法を解説します。 使用する主なメソッド split()メソッドは、Stringクラスに用意されたメソッドで、指定した正規表現に一致する部分を区切りとして現在の文字列を分割します。戻り値の配列には、正規表現に一致する部分文字列で区切られた各部分文字列、あるいは文字列の末尾までの部分文字列が格納されます。 replaceAll()メソッドは、正規表現と置換後の文字列の2つの引数を