javascript 文字列の先頭に指定した文字列を挿入する

javascript 文字列の先頭に指定した文字列を挿入する

javascriptで、padStartを使用して、文字列の先頭に指定した文字列を挿入するサンプルコードを記述してます。

環境

  • OS windows10 pro 64bit
  • Apache 2.4.43
  • ブラウザ chrome 103.0.5060.134

padStart使い方

「padStart」を使用すると、文字列の先頭に指定した文字列を挿入することが可能です。
※「埋め込みたい文字列」を指定しない場合は「半角スペース」となります。

文字列.padStart(長さを指定 [, 埋め込みたい文字列])

「padStart」使い方

const str = 'mebee';

// 7文字に合わせる
console.log(
  '\"' + str.padStart(7) + '\"'
);
// "  mebee"

// 埋める文字列を指定
console.log(
  str.padStart(7, "a") 
);
// aamebee

実行結果

「padStart」は、以下のように「ゼロ埋め」などによく利用されます。

const num1 = '123';
const num2 = '1234';

// 0で埋める
console.log(
  num1.padStart(5, "0"), // 00123
  num2.padStart(5, "0")  // 01234
);

文字数が少ない場合

指定した長さが文字数より少ない場合や「0」や「マイナス」を指定した場合は、元の文字列がそのまま返ります。

const num = '123';

console.log(
  num.padStart(0, "0"), // 123
  num.padStart(1, "0"),  // 123
  num.padStart(-10, "0")  // 123
);

また、指定した長さより、文字数が足らない場合、足りている分だけで埋められます。

console.log(
  num.padStart(4, "abc"), // a123
  num.padStart(5, "abcd"), // a123
);

日本語とサロゲートペア文字

日本語は、アルファベットと同じように動作しますが、

const str = 'あいうえお';

console.log(
  str.padEnd(7, "か") // あいうえおかか
);

通常の2バイトで1文字で表すところを、4バイトで1文字となるサロゲートペア文字だと、
1文字の長さが「1」ではなく「2」としてカウントされます。

const str = '😂😁';

console.log(
  str.padStart(5, "!"), // !😂😁
  str.padStart(6, "!"), // !!😂😁
  str.padStart(5, "😻"), // �😂😁
  str.padStart(6, "😻") // 😻😂😁
);

実行結果

文字列以外に使用

文字列以外に使用するとエラーが発生するため、使用前に文字列であるか判定してから使用すると
エラーは回避できます。

const num = 123;

if(typeof num === 'string'){

    console.log(
        num.padStart(5, "0") // 00123
    );

}

後方に文字を加える

逆に「後方に文字を加える」場合は、以下を参考にして下さい。

サンプルコード

以下は、
「実行」ボタンをクリックすると、指定した長さで指定した文字列を追加して表示する
サンプルコードとなります。

※cssには「bootstrap5」を使用してます。「bootstrap5」は、IEのサポートを終了してます。関数はアロー化してます。

<!DOCTYPE html>
<html lang="ja">

<head>
  <meta charset="utf-8">
  <title>mebeeサンプル</title>
  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Material+Icons">
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/css/bootstrap.min.css">
</head>

<style>
  .main {
    margin: 0 auto;
    margin-top: 200px;
    display: flex;
    flex-direction: column;
    align-items: center;
    font-size: 30px;
  }
</style>
<script>

  const hoge = () => {

    // フォームに入力された文字列の指定した文字列 + 指定したテキストを追加
    const str= txt.value.padStart(11, "Hello ") ; // document.getElementById('txt');を省略

    // 表示
    result.innerHTML = str;

  }
  
  window.onload = () => {
    // クリックイベントを登録
    btn.onclick = () => { hoge(); }; // document.getElementById('btn');を省略
  }

</script>

<body>
  <div class="main container">

    <h2><span id="result" class="badge bg-info">先頭に文字列追加</span></h2>
    
    <div class="mb-3">
      <input id="txt" type="text" class="form-control">
    </div>

    <div class="row">
      <button id="btn" type="button" class="btn btn-warning">
        実行
      </button>
    </div>

  </div>

</body>

</html>

先頭に文字列が追加されていることが確認できます。