我可以乘以Java中的string重复序列?
我有如下的东西:
int i = 3; String someNum = "123";
我想附加i
“0”到someNum
string。 是否有一些方法,我可以乘以一个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 < 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);