JavaScriptの再帰関数で文字列から英字のみを抽出する方法
本記事では、英字と数字が混在した文字列を引数として受け取り、英字のみで構成される新しい文字列を返す再帰関数「pickString」の実装方法を解説します。ループ文を使わず、再帰呼び出しだけでこの処理を実現するのがポイントです。
要件の確認
まず、期待される動作を具体例で確認しておきましょう。
入力:'dis122344as65t34er' 出力:'disaster'
このように、文字列に含まれる数字をすべて取り除き、残った英字を元の順序どおり連結した結果を返します。
コード例
const str = 'ex3454am65p43le';
const pickString = (str, len = 0, res = '') => {
if(len < str.length){
const char = parseInt(str[len], 10) ? '' : str[len];
return pickString(str, len+1, res+char);
};
return res;
};
console.log(pickString(str));
console.log(pickString('23123ca43n y43ou54 6do884 i43t'));
console.log(pickString('h432e54l43l65646o'));
console.log(pickString('t543h54is 54i5s 54t43he l543as53t 54ex87a455m54p45le'));
仕組みの解説
この関数は3つの引数を受け取ります。
- str:処理対象となる元の文字列
- len:現在チェックしている文字の位置(デフォルト値は 0)
- res:英字だけを蓄積していく結果文字列(デフォルト値は空文字)
ポイントは parseInt(str[len], 10) の部分です。現在の文字を10進数として数値変換し、その結果が truthy(有効な数字として評価できる)であれば空文字を、そうでなければその文字自体を結果に追加します。これにより、数字は自動的に除外され、英字だけが res へと蓄積されていきます。
そして、len が文字列の長さに達したタイミングで再帰呼び出しが終了し、それまでに蓄積した res が最終的な戻り値として返されます。
出力結果
上記のコードを実行すると、コンソールには次のように出力されます。
example can you do it hello this is the last example
空白や記号を含む文字列でも問題なく動作し、数字以外の文字はすべてそのまま保持される点も特徴です。再帰処理の基礎練習として、ぜひ参考にしてみてください。
-
JavaScriptの文字列入門|定義方法から比較演算子までわかりやすく解説
JavaScriptにおける文字列(String)は、他の多くのプログラミング言語と同様に、テキスト形式でデータを保持するデータ型です。Webアプリケーションにおいて文字列がよく使われる場面のひとつが、フォームからのユーザー入力の保持です。たとえば検索フォームでは、ユーザーが入力した検索キーワードは文字列として保存されます。 ユーザーが検索フォームに入力して送信すると、送信された文字列に対して比較操作が行われます。これは、一致する情報を見つけ出し、その結果をユーザーに返すためです。比較操作には「=」「==」「===」「」といったJavaScriptの演算子が使われ、これらは文字列が持つ値を比
-
JavaScriptで文字列を真偽値(Boolean)に変換する方法
JavaScriptでは、文字列が「true」というリテラルと一致するかどうかを比較演算子で判定することで、文字列を実質的に真偽値(Boolean)として扱うことができます。ここでは、==(緩い等価比較)と===(厳密等価比較)の2つの方法を使った具体例を紹介します。 サンプルコード <!DOCTYPE html> <html> <head> <style> body { font-family: &