我有如下内容:
int i = 3;
String someNum = "123";
我想i
在someNum
字符串后附加“0” 。它有什么方法可以像 Python 一样乘以一个字符串来重复它吗?
所以我可以去:
someNum = sumNum + ("0" * 3);
或类似的东西?
在这种情况下,我的最终结果是:
“123000”。
我有如下内容:
int i = 3;
String someNum = "123";
我想i
在someNum
字符串后附加“0” 。它有什么方法可以像 Python 一样乘以一个字符串来重复它吗?
所以我可以去:
someNum = sumNum + ("0" * 3);
或类似的东西?
在这种情况下,我的最终结果是:
“123000”。
不,但你可以在 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);
谷歌番石榴提供了另一种方法来做到这一点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
.
String::repeat
使用String::repeat
Java中11及更高版本。
"A".repeat( 3 )
AAA
以及问题中的示例。
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"
如果您像 OP 一样重复单个字符,并且最大重复次数不是太高,那么您可以使用这样的简单子字符串操作:
int i = 3;
String someNum = "123";
someNum += "00000000000000000000".substring(0, i);
否。Java 没有此功能。您必须使用StringBuilder和某种循环来创建您的 String 。
这样做的简单方法。
private String repeatString(String s,int count){
StringBuilder r = new StringBuilder();
for (int i = 0; i < count; i++) {
r.append(s);
}
return r.toString();
}
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);
}
我创建了一个可以做你想做的事情的方法,你可以试试这个:
public String repeat(String s, int count) {
return count > 0 ? s + repeat(s, --count) : "";
}
用美元:
String s = "123" + $("0").repeat(3); // 123000
我不相信 Java 本身就提供此功能,尽管它会很好。我偶尔会写 Perl 代码x
,Perl 中的运算符在重复字符串时非常方便!
不过StringUtils
incommons-lang
提供了这个功能。该方法称为repeat()
。您唯一的其他选择是使用循环手动构建它。
随着番石榴:
Joiner.on("").join(Collections.nCopies(i, someNum));
不,你不能。但是,您可以使用此功能重复一个字符。
public String repeat(char c, int times){
StringBuffer b = new StringBuffer();
for(int i=0;i < times;i++){
b.append(c);
}
return b.toString();
}
免责声明:我在这里打字。可能有错误。
Dave Hartnoll 的回答的概括(我主要是采用荒谬的概念,也许不要在需要速度的任何地方使用它)。这允许按照给定的模式用 i 个字符填充字符串。
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;
}
输入 multStuff("123", "0", 3);
输出 "123000"
我们可以在 python 中使用 * 创建多个字符串,但不能在 Java 中使用 for 循环:
String sample="123";
for(int i=0;i<3;i++)
{
sample=+"0";
}
像您在 Python 中给出的示例那样,在 Java 中执行此操作没有捷径。
你必须这样做:
for (;i > 0; i--) {
somenum = somenum + "0";
}
最简单的方法是:
String someNum = "123000";
System.out.println(someNum);
没有依赖关系的纯 Java 中最简单的方法是以下单行:
new String(new char[generation]).replace("\0", "-")
将generation替换为重复次数,并将“-”替换为您想要重复的字符串(或字符)。
所有这些都是创建一个包含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"); } }