1. ホーム
  2. java

[解決済み] 文字列を繰り返す簡単な方法

2022-03-14 15:43:37

質問

ある文字列を繰り返すことができる簡単な共通メソッドまたは演算子を探しています。 n 回です。forループを使って書くこともできるのですが、必要なときにはforループを避けたいので、簡単な直接的方法がどこかに存在するはずです。

String str = "abc";
String repeated = str.repeat(3);

repeated.equals("abcabcabc");

に関連しています。

繰り返し文字列 javascript 別の文字列を与えられた回数だけ繰り返してNSStringを作成する。

編集

というのも、完全に必要でない場合は、forループを避けるようにしているからです。

  1. 他の関数に隠されていても、コードの行数が増えてしまう。

  2. 私のコードを読む人は、私がこのループの中で何をしているのかを理解しなければなりません。たとえコメントがあって、意味のある変数名がついていたとしても、それが何もしていないことを確認しなければならないのです。

  3. プログラマはforループに巧妙なものを入れるのが好きです。たとえ私が「意図したことだけをする」と書いたとしても、誰かがやってきて、さらに巧妙な「修正」を加えることを妨げるものではありません。

  4. 間違えやすいことが非常に多い。インデックスを含むForループは、1つずつずれたバグを発生させる傾向があります。

  5. Forループは同じ変数を再利用することが多く、スコープバグを見つけるのが非常に困難な可能性が高くなります。

  6. ループは、バグハンターが探さなければならない場所の数を増やします。

解決方法は?

String::repeat

". ".repeat(7)  // Seven period-with-space pairs: . . . . . . . 

Java 11の新機能 は、メソッド String::repeat は、まさにあなたが求めていることを実現するものです。

String str = "abc";
String repeated = str.repeat(3);
repeated.equals("abcabcabc");

その ジャバドック は言う。

/**
 * Returns a string whose value is the concatenation of this
 * string repeated {@code count} times.
 * <p>
 * If this string is empty or count is zero then the empty
 * string is returned.
 *
 * @param count number of times to repeat
 *
 * @return A string composed of this string repeated
 * {@code count} times or the empty string if this
 * string is empty or count is zero
 *
 * @throws IllegalArgumentException if the {@code count} is
 * negative.
 *
 * @since 11
 */