JavaScriptで文字列からすべてのスペースを削除する方法
問題
JavaScriptで、文字列を受け取り、その文字列に含まれるすべての半角スペースを取り除いた新しい文字列を返す関数を作成します。たとえば、単語の間や文字の間に入っている余分なスペースがすべて削除され、連続した文字列だけが残るイメージです。
実装例:ループ処理を使う方法
まずは基本的なアプローチとして、forループで文字列を1文字ずつ確認し、スペース以外の文字だけを結果に連結していく方法を見てみましょう。
const str = 'some random string ex a m pl e';
const removeSpaces = (str = '') => {
let res = '';
for (let i = 0; i < str.length; i++) {
const el = str[i];
if (el !== ' ') {
res += el;
}
}
return res;
};
console.log(removeSpaces(str));出力結果
somerandomstringexample
このコードでは、引数として渡された文字列を先頭から順に走査し、スペース(' ')以外の文字のみをres変数に追加していきます。最終的に、スペースを含まない新しい文字列が返されます。
より簡潔な方法:replace()メソッドと正規表現
実際の開発では、String.prototype.replace()と正規表現を組み合わせる方法がよりシンプルで一般的です。
const removeSpaces = (str = '') => {
return str.replace(/\s/g, '');
};
console.log(removeSpaces('some random string ex a m pl e'));
// 出力: somerandomstringexample正規表現 /\s/g を使うことで、半角スペースだけでなく、タブや改行などのすべての空白文字を一度に削除できます。gフラグは「文字列全体で一致するものをすべて置換する」ことを意味します。
まとめ
- ループ処理を使えば、ロジックを明示的に書いてスペースを除外できる。
replace(/\s/g, '')を使うと、1行で簡潔にすべての空白文字を削除できる。
パフォーマンスや可読性の観点からも、通常はreplace()メソッドを使った方法が推奨されます。
-
JavaScriptで文字列内のすべてのドット(.)を置き換える方法
文字列内のドット(.)を置き換えるには、正規表現でドットをエスケープ(\.)し、replace()メソッドを使用します。ドットのエスケープが必要な理由正規表現において、ドット(.)は「任意の一文字」を表す特殊文字(メタ文字)です。そのため、リテラルのドットとして扱いたい場合は、バックスラッシュ(\)でエスケープする必要があります。また、文字列内のすべてのドットを置き換えるには、正規表現に「g」フラグ(グローバルフラグ)を付けることが重要です。「g」フラグを付けない場合、最初に見つかったドットしか置き換えられません。サンプルコード以下のコードを実行すると、文字列内のすべてのドットをスペースに置き
-
JavaScriptで双方向連結リストの要素を削除する方法
双方向連結リストから要素を削除する仕組み連結リストからの要素削除は非常にシンプルです。やるべきことは「削除したいノードへの参照を失わせる」こと、つまり対象ノードをリンクのチェーンから切り離すだけです。ただし、削除する位置によって処理が異なるため、次の3つのケースを考慮する必要があります。先頭(head)の要素を削除する: head = head.next と代入するだけで、先頭ノードへの参照は失われ、headは2番目の要素を指すようになります。このとき、新しいheadのprevをnullに設定し、前方向のリンクも忘れずに切っておきます。末尾(tail)の要素を削除する: 後ろから2番目のノード