Java | 文字列を指定した回数繰り返した新しい文字列を取得(repeat メソッド)

JavaScript JavaScript
スポンサーリンク

String.prototype.repeat() を超やさしく解説(例題つき)

repeat()ある文字列を指定回数だけ繰り返した新しい文字列 を返す便利なメソッドです。文法は簡単:

文字列.repeat(回数)
JavaScript

まずは動く例(超シンプル)

const s = 'Hi!';
console.log( s.repeat(3) ); // -> "Hi!Hi!Hi!"
console.log( s.repeat(1) ); // -> "Hi!"
console.log( s.repeat(0) ); // -> ""(空文字)
JavaScript

これは基本仕様で、元の s 自体は変わりません—新しい文字列が返されるだけです。


重要なルール(初心者がよく気にする点)

  • 回数0 以上の整数(つまり 0, 1, 2, …)である必要があります。負の数や Infinity を渡すと RangeError(例外)が発生します。
  • 回数0 のときは空文字("")が返ります。
  • 回数小数(例: 3.7) を入れると、内部で整数に変換され(切り捨てられ)、その回数だけ繰り返されます(3.7 → 3回)。また NaN を渡すと 0 と扱われる場合が多く、空文字が返ります。
  • とても大きな回数を指定すると「結果の文字列が大きすぎる」ことでエラーになることがあります(実行環境に依存)。

具体的な例(出力を示す)

console.log( '*'.repeat(5) );   // "*****"
console.log( 'abc'.repeat(2) ); // "abcabc"
console.log( 'A'.repeat(0) );   // ""(空文字)
console.log( 'x'.repeat(3.9) ); // "xxx"(3回)
JavaScript
console.log( 'Hi'.repeat(-1) ); // RangeError: repeat count must be non-negative
console.log( 'Hi'.repeat(Infinity) ); // RangeError: repeat count must be less than infinity

負の値・Infinity を渡すと RangeError が出るので注意。


実用例(初心者向けアイデア)

  1. 装飾(★ を並べる)
const stars = '★'.repeat(10); // 見出しなどの装飾に
JavaScript
  1. パスワード入力のマスク(長さだけ * に)
const password = 'secret';
const mask = '*'.repeat(password.length); // "******"
JavaScript
  1. 一定幅で揃える補助(スペースを繰り返す)
const name = 'Bob';
const pad = ' '.repeat(10 - name.length);
console.log( name + pad + '|' ); // "Bob |"
JavaScript

よくある間違いと対処法

  • 負の値を入れてしまう → `RangeError`。入力値を `Math.max(0, count)` で守る。
const safeCount = Math.max(0, userInput);
'x'.repeat(safeCount);
JavaScript
  • 小数を入れて意図しない回数になる → 明示的に Math.floor などで整数化する。
'a'.repeat(Math.floor(2.9)); // 2回
JavaScript
  • 巨大な回数でブラウザが固まる/エラー → 上限を決める(例:Math.min(count, 1_000_000))など。

練習問題(自分で手を動かしてみよう)

問題1

'HA'.repeat(3) の結果は?
: "HAHAHA"

問題2

'・'.repeat(0) の結果は?
: ""(空文字)

問題3

'ab'.repeat(2.7) の結果は?理由も簡単に。
: "abab"(2.7 は整数に変換され切り捨てられるため 2 回繰り返される)

問4(やや注意)

次のコードで何が起きるか?説明してください。

console.log('X'.repeat(-2));
JavaScript

: RangeError が投げられる(repeat の回数は 0 以上でなければいけない)。

問題5(実践)

ユーザーから長さ n のマスクを作るコードを書いてください(n が負なら 0 と扱う)。
:

function makeMask(n) {
  const count = Math.max(0, Math.floor(n));
  return '*'.repeat(count);
}
JavaScript

まとめ(超短く)

  • 文字列.repeat(回数) で文字列を繰り返す。結果は新しい文字列。
  • 回数は 0 以上の整数(小数は切り捨てられ、負や Infinity はエラー)。
  • 大きすぎる回数は実行時に問題を起こす可能性があるので入力チェックを忘れずに。
タイトルとURLをコピーしました