나는 String n 번 반복 할 수있는 간단한 commons 메소드 또는 연산자를 찾고 있습니다 . 나는 for 루프를 사용하여 이것을 작성할 수 있다는 것을 알고 있지만 필요할 때마다 for 루프를 피하고 간단한 직접 방법이 어딘가에 있어야합니다.
String str = "abc";
String repeated = str.repeat(3);
repeated.equals("abcabcabc");
와 연관되다:
문자열 자바 스크립트
반복 주어진 횟수만큼 다른 문자열을 반복하여 NSString 생성
편집
루프가 완전히 필요하지 않은 경우 for 루프를 피하려고합니다.
-
그들은 다른 함수에 얽혀 있어도 코드 줄 수에 추가합니다.
-
내 코드를 읽는 사람은 for 루프에서 내가하는 일을 알아야합니다. 주석을 달고 의미있는 변수 이름을 가지고 있더라도 여전히 “영리한”작업을 수행하지 않아야합니다.
-
프로그래머는 for 루프에 영리한 것을 넣는 것을 좋아합니다. 비록 내가 의도 한 대로만 수행한다고하더라도 누군가가 와서 영리한 “수정”을 추가하는 것을 방해하지는 않습니다.
-
그들은 종종 잘못되기 쉽습니다. 인덱스와 관련된 루프는 하나의 버그로 생성되는 경향이 있습니다.
-
For 루프는 종종 같은 변수를 재사용하므로 범위 지정 버그를 찾기가 매우 어려워집니다.
-
For 루프는 버그 사냥꾼이 찾아야하는 장소의 수를 늘립니다.
답변
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
*/
답변
가장 짧은 버전은 다음과 같습니다 (Java 1.5 이상 필요).
repeated = new String(new char[n]).replace("\0", s);
n
문자열을 반복하려는 횟수는 어디 이며 반복 할 문자열 s
입니다.
가져 오기 또는 라이브러리가 필요하지 않습니다.
답변
Java <= 7을 사용하는 경우 다음과 같이 “간결”합니다.
// create a string made up of n copies of string s
String.format("%0" + n + "d", 0).replace("0", s);
에서 자바 8 위보다 읽기 쉬운 방법이있다 :
// create a string made up of n copies of string s
String.join("", Collections.nCopies(n, s));
마지막으로 Java 11 이상에서는 repeat(int count)
this ( link )를 위한 새로운 방법이 있습니다.
"abc".repeat(12);
또는 프로젝트에서 Java 라이브러리를 사용하는 경우 더 많은 옵션이 있습니다.
들어 아파치 코 몬즈 :
StringUtils.repeat("abc", 12);
대한 구글 구아바 :
Strings.repeat("abc", 12);
답변
Commons Lang StringUtils.repeat ()
용법:
String str = "abc";
String repeated = StringUtils.repeat(str, 3);
repeated.equals("abcabcabc");
답변
Java 8 String.join
은 다음과 관련하여 깔끔한 방법을 제공합니다 Collections.nCopies
.
// say hello 100 times
System.out.println(String.join("", Collections.nCopies(100, "hello")));
답변
표준 String 함수 만 사용하고 명시적인 루프를 사용하지 않는 방법은 다음과 같습니다.
// create a string made up of n copies of s
repeated = String.format(String.format("%%%ds", n), " ").replace(" ",s);
답변
당신이 나와 같고 Apache Commons가 아닌 Google Guava를 사용하고 싶다면. Guava Strings 클래스에서 repeat 메소드를 사용할 수 있습니다 .
Strings.repeat("-", 60);