JavaScriptで数値文字列の先頭ゼロを空白に置き換える方法
JavaScriptで、数値を表す文字列を受け取り、先頭のゼロを空白(半角スペース)に置き換える関数を作成する方法を解説します。このとき、数値の前にすでに存在する空白はそのまま保持する必要があります。
要件の確認
例えば、次のような文字列が与えられたとします。
"004590808"
この場合、期待される出力は以下の通りです。
"4590808"
先頭に連続する「0」が、同じ文字数の半角スペースに置き換えられます。それ以外の部分はそのまま維持され、元の文字列の先頭に空白がある場合も、その空白は保持されます。
実装例
この処理を実現するコードは以下の通りです。
const str = ' 004590808';
const replaceWithSpace = str => {
let replaced = '';
const regex = new RegExp(/^\s*0+/);
replaced = str.replace(regex, el => {
const { length } = el;
return ' '.repeat(length);
});
return replaced;
};
console.log(replaceWithSpace(str));
コードのポイント
- 正規表現
/^\s*0+/は、「文字列の先頭にある任意の空白と、それに続く1つ以上のゼロ」にマッチします。 replace()の第2引数にコールバック関数を渡し、マッチした部分文字列(el)の長さを取得しています。' '.repeat(length)を使うことで、マッチした部分と同じ文字数の半角スペースを生成して返します。これにより、置き換え後も文字列全体の長さが変わらず、レイアウトが崩れません。
出力結果
コンソールには以下のように出力されます(先頭の空白は保持されています)。
4590808
このように正規表現と String.prototype.repeat() を組み合わせることで、先頭ゼロを空白へ安全かつシンプルに置き換えることができます。固定桁の数値データを整形したい場合などに活用できるテクニックです。
-
JavaScriptのconst宣言とは?再代入できない変数の基本と使い方を解説
JavaScriptのconst宣言は、値を再代入することも後から再宣言することもできない変数を作成するための構文です。constはES2015(ES6)で導入されました。 const宣言の主な特徴 一度値を代入すると、別の値に再代入することはできません。 同じ名前の変数を同じスコープ内で再宣言するとエラーになります。 宣言時に必ず初期値を代入する必要があります。 ブロックスコープ({}内でのみ有効)を持ちます。 それでは、JavaScriptにおけるconst宣言の実際のコードを見ていきましょう。 サンプルコード <!DOCTYPE html> <html>
-
JavaScriptのconstとletの違いを徹底解説!ブロックスコープ変数の基本と使い方
JavaScriptにおけるconstとletの基本const と let は、ES2015(ES6)で導入された変数宣言用のキーワードです。どちらもブロックスコープ(波括弧 { } で囲まれた範囲)に対応しているのが特徴で、関数スコープしか持たなかった従来の var とは異なる挙動を示します。両者の大きな違いは再代入の可否です。letで宣言した変数は後から何度でも値を再代入できますが、constで宣言した変数は再代入しようとするとエラー(TypeError)が発生します。letとconstの主な違い項目letconst再代入可能不可(エラー発生)スコープブロックスコープブロックスコープ宣言時