我可以将Java中的字符串乘以重复序列吗?

时间:2010-02-12 22:16:28

标签: java string

我有以下内容:

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

我想将i“0”附加到someNum字符串。它是否有某种方法可以将字符串乘以像Python一样重复它?

所以我可以去:

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

或类似的东西?

在这种情况下,我的最终结果将是:

“123000”。

19 个答案:

答案 0 :(得分:73)

普通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");
    }
}

答案 1 :(得分:33)

不,但你可以在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);

答案 2 :(得分:21)

Google Guava提供了使用Strings#repeat()执行此操作的另一种方法:

String repeated = Strings.repeat("pete and re", 42);

答案 3 :(得分:18)

我想到了两种方式:

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

its API doc以及java.util.Formatter中的{{}}}提供了有关String#format()的更多信息。

答案 4 :(得分:16)

如果您重复单个字符(如OP),并且最大重复次数不是太高,那么您可以使用这样的简单子字符串操作:

int i = 3;
String someNum = "123";
someNum += "00000000000000000000".substring(0, i);

答案 5 :(得分:10)

没有。 Java没有此功能。您必须使用StringBuilder和某种循环创建String。

答案 6 :(得分:8)

这样做的简单方法。

private String repeatString(String s,int count){
    StringBuilder r = new StringBuilder();
    for (int i = 0; i < count; i++) {
        r.append(s);
    }
    return r.toString();
}

答案 7 :(得分:6)

Java 8提供了一种方法(虽然有点笨重)。作为一种方法:

public static String repeat(String s, int n) {
    return Stream.generate(() -> s).limit(n).collect(Collectors.joining(""));
}

或效率较低,但看起来更好看恕我直言:

public static String repeat(String s, int n) {
    return Stream.generate(() -> s).limit(n).reduce((a, b) -> a + b);
}

答案 8 :(得分:5)

Dollar

String s = "123" + $("0").repeat(3); // 123000

答案 9 :(得分:4)

使用Guava

Joiner.on("").join(Collections.nCopies(i, someNum));

答案 10 :(得分:3)

我不相信Java原生提供此功能,尽管它会很好。我偶尔编写Perl代码,Perl中的x运算符非常方便重复字符串!

StringUtils provides此功能commons-lang。该方法称为repeat()。您唯一的另一种选择是使用循环手动构建它。

答案 11 :(得分:2)

不,你不能。但是,您可以使用此功能重复一个字符。

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();
}

免责声明:我在此输入。可能有错误。

答案 12 :(得分:2)

使用 Java11 (目前处于Early Access阶段),您可以使用 String.repeat API实现相同目标如下:

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"

答案 13 :(得分:1)

Dave Hartnoll答案的概括(我主要采用的概念是荒谬的,也许不会在你需要速度的任何地方使用它)。 这允许在给定模式之后用字符填充字符串。

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);

答案 14 :(得分:1)

与已经说过的相似:

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"

答案 15 :(得分:1)

我创建了一个方法,可以做同样的事情,随便尝试一下:

public String repeat(String s, int count) {
    return count > 0 ? s + repeat(s, --count) : "";
}

答案 16 :(得分:0)

我们可以在python中使用*创建多重字符串,但在你的情况下可以用于循环的java中创建多个字符串:

String sample="123";
for(int i=0;i<3;i++)
{
sample=+"0";
}

答案 17 :(得分:-1)

在Java中执行此操作没有捷径,就像您在Python中提供的示例一样。

你必须这样做:

for (;i > 0; i--) {
    somenum = somenum + "0";
}

答案 18 :(得分:-13)

最简单的方法是:

String someNum = "123000";
System.out.println(someNum);