Я могу умножить строки в Java для повторения последовательностей? [дубликат]

Этот вопрос уже имеет ответ здесь:

У меня есть что-то как следующее:

int i = 3;
String someNum = "123";

Я хотел бы добавить i "0" s к someNum строка. Это имеет некоторый способ, которым я могу умножить строку, чтобы повторить, что это как Python делает?

Таким образом, я мог просто пойти:

someNum = sumNum + ("0" * 3);

или что-то подобное?

Где в этом случае мой конечный результат был бы:

"123000".

85
задан G.Broser says Reinstate Monica 1 July 2016 в 16:42
поделиться

8 ответов

Нет, не можете. Однако вы можете использовать эту функцию для повторения символа.

public String repeat(char c, int times){
    StringBuffer b = new StringBuffer();

    for(int i=0;i < times;i++){
        b.append(c);
    }

    return b.toString();
}

Отказ от ответственности: я напечатал это здесь. Могут быть ошибки.

2
ответ дан 24 November 2019 в 08:14
поделиться

Я не верю, что Java изначально предоставляет эту функцию, хотя было бы неплохо. Я иногда пишу код Perl, и оператор x в Perl очень удобен для повторения строк!

Однако StringUtils в commons-lang предоставляет эту функцию. Метод называется repeat () . Единственный другой вариант - создать его вручную с помощью цикла.

3
ответ дан 24 November 2019 в 08:14
поделиться

Нет. В Java нет этой функции. Вам нужно будет создать свою строку, используя StringBuilder и какой-то цикл.

11
ответ дан 24 November 2019 в 08:14
поделиться

На ум приходят два способа:

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 и тот из java.util.Formatter .

18
ответ дан 24 November 2019 в 08:14
поделиться

Нет, но вы можете в 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);
33
ответ дан 24 November 2019 в 08:14
поделиться

С Гуава :

Joiner.on("").join(Collections.nCopies(i, someNum));
4
ответ дан 24 November 2019 в 08:14
поделиться

В Java нет быстрого способа сделать это, как в примере, который вы привели в Python.

Вам придется сделать так:

for (;i > 0; i--) {
    somenum = somenum + "0";
}
-1
ответ дан 24 November 2019 в 08:14
поделиться

с Доллар :

String s = "123" + $("0").repeat(3); // 123000
5
ответ дан 24 November 2019 в 08:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: