我可以乘以Java中的string重复序列?

我有如下的东西:

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

我想附加i “0”到someNumstring。 是否有一些方法,我可以乘以一个string重复它像Python呢?

所以我可以去:

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

或类似的东西?

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

“123000”。

简单Java中最简单的方法是不带依赖的,如下所示:

 new String(new char[generation]).replace("\0", "-") 

用重复次数代替代数,用你想要重复的string(或字符)replace“ – ”。

所有这些都是创build一个包含n个0x00字符的空string,剩下的就是内置的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"); } } 

不,但你可以在斯卡拉! (然后编译并使用任何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); 

谷歌番石榴提供了另一种方式来做到这一点与Strings#repeat()

 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文档和java.util.Formatter

如果你重复OP这样的单个字符,并且重复的最大次数不是太高,那么你可以使用一个简单的子string操作,如下所示:

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

不。Java没有这个function。 你必须使用StringBuilder创build你的string,以及某种types的循环。

Java 8提供了一种方式(尽pipe有点笨重)。 作为一种方法:

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

与美元 :

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

简单的方法做到这一点。

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

番石榴 :

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

我不相信Java原生提供这个function,虽然它会很好。 我偶尔编写Perl代码,Perl中的x运算符非常方便重复使用string!

但是, commons-lang StringUtils 提供了这个function。 该方法被称为repeat() 。 你唯一的select是使用循环手动构build它。

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

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

免责声明:我在这里input。 可能有错误。

戴夫·哈特诺尔(Dave Hartnoll)的回答(我主要把这个概念带到了荒谬的概念中,也许不会在你需要任何速度的地方使用)。 这允许用一个给定的模式填充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; } 

inputmultStuff("123", "0", 3);

输出"123000"

我创build了一个方法来做同样的事情,你可以试一下:

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

我们可以在python中使用*创build多个string,但不能在java中使用for循环:

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

在Java中这样做没有捷径,就像你在Python中给出的例子。

你必须这样做:

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

最简单的方法是:

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