我有以下内容:
int i = 3;
String someNum = "123";
Run Code Online (Sandbox Code Playgroud)
我想i
在someNum
字符串中添加"0" .它是否有某种方式我可以像Python一样繁殖一个字符串来重复它?
所以我可以去:
someNum = sumNum + ("0" * 3);
Run Code Online (Sandbox Code Playgroud)
或类似的东西?
在这种情况下,我的最终结果将是:
"123000".
小智 75
普通Java中没有依赖关系的最简单方法是以下单行:
new String(new char[generation]).replace("\0", "-")
Run Code Online (Sandbox Code Playgroud)
将生成替换为重复次数,将" - "替换为您想要重复的字符串(或字符).
所有这一切都是创建一个包含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");
}
}
Run Code Online (Sandbox Code Playgroud)
les*_*es2 33
不,但你可以在斯卡拉!(然后编译并使用任何Java实现运行它!!!!)
现在,如果您想在Java中使用简单的方法,请使用Apache commons-lang包.假设您正在使用maven,请将此依赖项添加到您的pom.xml:
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.4</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
然后使用StringUtils.repeat,如下所示:
import org.apache.commons.lang.StringUtils
...
someNum = sumNum + StringUtils.repeat("0", 3);
Run Code Online (Sandbox Code Playgroud)
Mat*_*all 22
Google Guava提供了另一种方法Strings#repeat()
:
String repeated = Strings.repeat("pete and re", 42);
Run Code Online (Sandbox Code Playgroud)
Nam*_*man 20
String::repeat
使用String::repeat
Java中11及更高版本。
"A".repeat( 3 )
Run Code Online (Sandbox Code Playgroud)
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"
Run Code Online (Sandbox Code Playgroud)
Bal*_*usC 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
Run Code Online (Sandbox Code Playgroud)
方式2可以缩短为:
someNum += String.format("%0" + i + "d", 0);
System.out.println(someNum); // 123000
Run Code Online (Sandbox Code Playgroud)
更多String#format()
的是提供了API文档和的一个java.util.Formatter
.
Dav*_*oll 17
如果您重复单个字符(如OP),并且最大重复次数不是太高,那么您可以使用如下的简单子字符串操作:
int i = 3;
String someNum = "123";
someNum += "00000000000000000000".substring(0, i);
Run Code Online (Sandbox Code Playgroud)
Geo*_*Geo 11
不,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();
}
Run Code Online (Sandbox Code Playgroud)
小智 8
我创建了一个可以做你想做的事情的方法,你可以试试这个:
public String repeat(String s, int count) {
return count > 0 ? s + repeat(s, --count) : "";
}
Run Code Online (Sandbox Code Playgroud)
Java 8提供了一种方法(虽然有点笨重).作为一种方法:
public static String repeat(String s, int n) {
return Stream.generate(() -> s).limit(n).collect(Collectors.joining(""));
}
Run Code Online (Sandbox Code Playgroud)
或效率较低,但看起来更好看恕我直言:
public static String repeat(String s, int n) {
return Stream.generate(() -> s).limit(n).reduce((a, b) -> a + b);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
120693 次 |
最近记录: |