Java에서 문자열을 곱하여 시퀀스를 반복할 수 있습니까?
다음과 같은 것이 있습니다.
int i = 3;
String someNum = "123";
추가하겠습니다.i
"0"부터someNum
스트링Python처럼 문자열을 곱해서 반복할 수 있는 방법이 있나요?
그래서 난 그냥 갈 수 있었다.
someNum = sumNum + ("0" * 3);
아님 비슷한 거?
이 경우 최종 결과는 다음과 같습니다.
"123000".
종속성이 없는 일반 Java에서 가장 쉬운 방법은 다음과 같은 한 줄입니다.
new String(new char[generation]).replace("\0", "-")
생성을 반복 횟수로 바꾸고 "-"를 반복할 문자열(또는 문자)로 바꿉니다.
n개의 0x00 문자를 포함하는 빈 문자열이 생성되고 나머지는 내장된 String #replace 메서드가 수행합니다.
복사하여 붙여넣을 샘플은 다음과 같습니다.
public static String repeat(int count, String with) {
return new String(new char[count]).replace("\0", with);
}
public static String repeat(int count) {
return repeat(count, " ");
}
public static void main(String[] args) {
for (int n = 0; n < 10; n++) {
System.out.println(repeat(n) + " Hello");
}
for (int n = 0; n < 10; n++) {
System.out.println(repeat(n, ":-) ") + " Hello");
}
}
아니요, 하지만 Scala에서는 할 수 있습니다. (그리고 그것을 컴파일하여 임의의 Java 구현을 사용하여 실행하세요!!!!)
Java에서 쉽게 실행할 수 있도록 하려면 Apache commons-lang 패키지를 사용합니다.maven을 사용하는 경우 pom.xml에 다음 종속성을 추가합니다.
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.4</version>
</dependency>
그런 다음 다음과 같이 StringUtils.repeat을 사용합니다.
import org.apache.commons.lang.StringUtils
...
someNum = sumNum + StringUtils.repeat("0", 3);
String::repeat
Java 11 이상에서 사용합니다.
예
"A".repeat( 3 )
아
그리고 질문의 예시입니다.
int i = 3; //frequency to repeat
String someNum = "123"; // initial string
String ch = "0"; // character to append
someNum = someNum + ch.repeat(i); // formulation of the string
System.out.println(someNum); // would result in output -- "123000"
Google Guava는 다음과 같은 방법으로 이를 수행할 수 있습니다.
String repeated = Strings.repeat("pete and re", 42);
두 가지 방법이 생각납니다.
int i = 3;
String someNum = "123";
// Way 1:
char[] zeroes1 = new char[i];
Arrays.fill(zeroes1, '0');
String newNum1 = someNum + new String(zeroes1);
System.out.println(newNum1); // 123000
// Way 2:
String zeroes2 = String.format("%0" + i + "d", 0);
String newNum2 = someNum + zeroes2;
System.out.println(newNum2); // 123000
방법 2는 다음과 같이 단축할 수 있습니다.
someNum += String.format("%0" + i + "d", 0);
System.out.println(someNum); // 123000
상세 정보String#format()
는 API 문서 및 의 API 문서에서 사용할 수 있습니다.
OP와 같이 단일 문자를 반복하고 최대 반복 횟수가 많지 않은 경우 다음과 같은 간단한 하위 문자열 연산을 사용할 수 있습니다.
int i = 3;
String someNum = "123";
someNum += "00000000000000000000".substring(0, i);
아니요. Java에는 이 기능이 없습니다.String Builder 및 일종의 루프를 사용하여 String을 작성해야 합니다.
간단한 방법.
private String repeatString(String s,int count){
StringBuilder r = new StringBuilder();
for (int i = 0; i < count; i++) {
r.append(s);
}
return r.toString();
}
Java 8은 (좀 투박하긴 하지만) 방법을 제공합니다.방법으로서:
public static String repeat(String s, int n) {
return Stream.generate(() -> s).limit(n).collect(Collectors.joining(""));
}
효율은 떨어지지만 외모가 좋은 IMHO:
public static String repeat(String s, int n) {
return Stream.generate(() -> s).limit(n).reduce((a, b) -> a + b);
}
당신이 원하는 대로 할 수 있는 방법을 만들었으니, 자유롭게 시도해 보세요.
public String repeat(String s, int count) {
return count > 0 ? s + repeat(s, --count) : "";
}
(달러 포함):
String s = "123" + $("0").repeat(3); // 123000
Java가 기본적으로 이 기능을 제공한다고는 생각하지 않습니다만, 그것도 좋을 것입니다.가끔 Perl 코드를 쓰고x
Perl 연산자는 문자열 반복에 매우 편리합니다.
, <고객명>님StringUtils
commons-lang
는 이 기능을 제공합니다.이 메서드는repeat()
다른 옵션은 루프를 사용하여 수동으로 빌드하는 것뿐입니다.
Guava 포함:
Joiner.on("").join(Collections.nCopies(i, someNum));
아니, 그럴 수 없다.그러나 이 기능을 사용하여 문자를 반복할 수 있습니다.
public String repeat(char c, int times){
StringBuffer b = new StringBuffer();
for(int i=0;i < times;i++){
b.append(c);
}
return b.toString();
}
면책사항:여기에 입력했어요.실수가 있을 수 있습니다.
Dave Hartnoll의 답변의 일반화(나는 주로 터무니없는 컨셉을 채택하고 있다. 아마도 속도를 필요로 하는 어떤 것에도 그것을 사용하지 않을 것이다.)이렇게 하면 특정 패턴에 이은 i자로 String을 채울 수 있습니다.
int i = 3;
String someNum = "123";
String pattern = "789";
someNum += "00000000000000000000".replaceAll("0",pattern).substring(0, i);
패턴은 필요 없고 한 글자만 있으면 사용할 수 있습니다(조금 더 빠릅니다).
int i = 3;
String someNum = "123";
char c = "7";
someNum += "00000000000000000000".replaceAll("0",c).substring(0, i);
이미 말한 내용과 유사합니다.
public String multStuff(String first, String toAdd, int amount) {
String append = "";
for (int i = 1; i <= amount; i++) {
append += toAdd;
}
return first + append;
}
★★multStuff("123", "0", 3);
" ""123000"
python에서는 *를 사용하여 다중 문자열을 만들 수 있지만, Java에서는 사용할 수 없습니다.
String sample="123";
for(int i=0;i<3;i++)
{
sample=+"0";
}
Python에서 설명한 예시와 같이 Java에서 이를 수행하기 위한 숏컷은 없습니다.
다음과 같이 해야 합니다.
for (;i > 0; i--) {
somenum = somenum + "0";
}
가장 간단한 방법은 다음과 같습니다.
String someNum = "123000";
System.out.println(someNum);
언급URL : https://stackoverflow.com/questions/2255500/can-i-multiply-strings-in-java-to-repeat-sequences
'programing' 카테고리의 다른 글
줄을 서야 한다." 결과 UnicodeDecodeError: 'utf-8' 코덱이 바이트를 디코딩할 수 없습니다. (0) | 2023.01.15 |
---|---|
PyLint 메시지: logging-format-interpolation (0) | 2023.01.15 |
WHERE 절에서 mysql concat()을 사용하고 있습니까? (0) | 2023.01.15 |
Matplotlib tight_layout()은 그림 suptitle을 고려하지 않습니다. (0) | 2023.01.15 |
Javascript에서 배열에서 빈 요소 제거 (0) | 2023.01.15 |