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

JavaScriptで文字列からアルファベット以外の文字をすべて削除する方法

JavaScriptでは、文字列を受け取り、そこからアルファベット(英字)以外の文字をすべて取り除いた新しい文字列を作成して返す関数が必要になる場面があります。ただし、文字列に含まれる空白(スペース)は削除せず、そのまま残すものとします。

処理の例

たとえば、入力文字列が以下の場合を考えてみましょう。

const str = 'he@656llo wor?ld';

このとき、期待される出力は次のとおりです。

hello world

実装コード

以下が実際のコード例です。

const str = 'he@656llo wor?ld';

// 英字または半角スペースかどうかを判定する関数
const isAlphaOrSpace = char =>
  ((char.toLowerCase() !== char.toUpperCase()) || char === ' ');
// 特殊文字を取り除く関数
const removeSpecials = (str = '') => {
  let res = '';
  const { length: len } = str;
  for (let i = 0; i < len; i++) {
    const el = str[i];
    if (isAlphaOrSpace(el)) {
      res += el;
    }
  }
  return res;
};

console.log(removeSpecials(str));

コードの解説

このアプローチのポイントは、isAlphaOrSpace 関数による判定方法です。英字は toLowerCase()toUpperCase() を適用すると結果が変化しますが、数字や記号などの非アルファベット文字には大文字・小文字の区別がないため、変換前後で同じ文字になります。この性質を利用することで、その文字が英字かどうかを簡単に見分けられます。さらに「char === ' '」という条件を組み合わせることで、半角スペースも削除対象から除外しています。

正規表現を使ったより簡潔な方法

ループ処理を書かずに、正規表現を使えば1行で同じ処理を実現できます。

const removeSpecials = str => str.replace(/[^a-zA-Z ]/g, '');

console.log(removeSpecials('he@656llo wor?ld')); // hello world

パターン「[^a-zA-Z ]」は「英字と半角スペース以外の文字」を意味します。replace() メソッドでこれらを空文字列に置き換えることで、不要な文字だけをまとめて除去できます。可読性と保守性を重視する場合は、こちらの方法がおすすめです。

出力結果

いずれの方法でも、コンソールには次のように表示されます。

hello world
  1. JavaScriptで文字列の配列からコメントを削除する方法

    この記事では、JavaScriptを使って文字列の配列からコメント部分を削除する方法について解説します。 問題 文字列の配列 arr を第一引数として、特殊文字の配列 starters を第二引数として受け取るJavaScript関数を作成する必要があります。 starters 配列には、コメントの開始となり得る文字が格納されています。作成する関数は、配列 arr を走査し、各文字列に含まれるコメントをすべて削除した結果を返すものとします。 例えば、関数への入力が次のような場合を考えてみましょう。 const arr = [    red, green !blue

  2. JavaScriptで文字列内の文字を英字・数字・特殊文字に再グループ化する方法

    問題文字列 str を第一引数(唯一の引数)として受け取る JavaScript 関数を作成する必要があります。この文字列には、次の3種類の文字が含まれる可能性があります。英字:(A-Z)、(a-z)数字:0〜9特殊文字:上記以外のすべての文字関数は文字列を先頭から順に走査し、ちょうど3つの要素からなる配列を構築します。1番目の要素には文字列に含まれるすべての英字、2番目には数字、3番目には特殊文字を格納し、それぞれ元の文字列内での出現順(相対的な順序)を維持します。最後にこの配列を返します。例えば、関数への入力が次の場合を考えてみましょう。入力const str = thi!1s is S@