我有以下内容:
int i = 3;
String someNum = "123";
我想将i
“0”附加到someNum
字符串。它是否有某种方法可以将字符串乘以像Python一样重复它?
所以我可以去:
someNum = sumNum + ("0" * 3);
或类似的东西?
在这种情况下,我的最终结果将是:
“123000”。
答案 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)
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 < 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);