programing

Java에서 문자열을 곱하여 시퀀스를 반복할 수 있습니까?

bestcode 2023. 1. 15. 17:06
반응형

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 코드를 쓰고xPerl 연산자는 문자열 반복에 매우 편리합니다.

, <고객명>님StringUtilscommons-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 &lt; 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

반응형