JavaScriptで文字列内の英字だけを抽出して逆順に並べ替える方法
問題
文字列 str を引数として受け取るJavaScript関数を考えます。この関数の役割は、文字列を反転させることですが、その際にアルファベット以外の文字(数字や記号など)はすべて除外しなければなりません。
たとえば、入力が「exa13mple」の場合、数字の「13」を取り除き、残った英字だけを逆順にした「elpmaxe」が期待される出力となります。
解決アプローチ
この問題は、以下の手順で解決できます。
1. split(''):文字列を1文字ずつに分解して配列にします。
2. reverse():配列の要素順を反転させます。
3. filter():正規表現 /[a-zA-Z]/ を使って、英字のみの要素を残します。
4. join(''):配列の要素を連結して、再び文字列に戻します。
コード例
以下が実際のコードです。
const str = 'exa13mple';
function reverseLetter(str) {
const res = str.split('')
.reverse()
.filter(val => /[a-zA-Z]/.test(val))
.join('');
return res;
};
console.log(reverseLetter(str));出力結果
elpmaxe
コードの解説
この実装では、メソッドチェーンを使って処理を簡潔にまとめています。正規表現 /[a-zA-Z]/ を test() メソッドに渡すことで、各文字が半角英字かどうかを判定しています。数字や記号は filter の段階で除外されるため、最終的な出力には英字だけが逆順に並ぶ仕組みです。
なお、大文字・小文字の両方に対応したい場合は、この正規表現で十分ですが、Unicode対応などより厳密な判定が必要なケースでは、別のアプローチを検討するとよいでしょう。
-
JavaScriptのエスケープ文字とは?特殊文字のエスケープ方法と一覧を解説
エスケープ文字とは?エスケープ文字とは、プログラム上で本来意図した意味とは別の特別な意味に解釈されてしまう文字のことです。たとえば、ダブルクォートやシングルクォート、改行コードなどが該当します。こうした文字を「そのままの文字」として扱い、画面に出力したい場合には、直前にバックスラッシュ「\」を付けて記述します。この操作を「エスケープ処理」と呼びます。JavaScriptの主なエスケープ文字一覧コード意味・出力結果\bバックスペース\fフォームフィード\n改行(ニューライン)\rキャリッジリターン\t水平タブ\v垂直タブ\シングルクォート()\ダブルクォート()\\バックスラッシュ(\)バックス
-
JavaScriptの関数プロトタイプとは?仕組みと使い方を解説
JavaScriptで作成されたすべての関数には、JavaScriptエンジンによって自動的にprototypeプロパティが追加されます。このprototypeプロパティはオブジェクトであり、デフォルトではconstructorプロパティを含んでいます。関数のプロトタイプには、以下のようにしてアクセスできます。functionName.prototypeコンストラクタ関数を使ってオブジェクトを生成する場合、このprototypeプロパティを活用することで、同じコンストラクタから作成された複数のオブジェクト間でメソッドやプロパティを効率的に共有することができます。これにより、各インスタンスごとに