有没有一种简单的方法可以将字符或其他字符串n次添加到现有的String中?我无法找到任何东西String,Stringbuilder等等.
zel*_*ler 37
Apache commons-lang3有StringUtils.repeat(String, int)这个,你可以这样做(为了简单起见,不是StringBuilder):
String original;
original = original + StringUtils.repeat("x", n);
Run Code Online (Sandbox Code Playgroud)
由于它是开源的,您可以阅读它的编写方式.如果我没记错的话,对于小ns有一个小的优化,但大多数时候它使用StringBuilder.
sud*_*ode 26
对于重复单个字符(不是字符串)的情况,您可以使用Arrays.fill:
String original = "original ";
char c = 'c';
int number = 9;
char[] repeat = new char[number];
Arrays.fill(repeat, c);
original += new String(repeat);
Run Code Online (Sandbox Code Playgroud)
小智 22
您可以使用Java 8流API执行此操作.以下代码"cccc"从以下位置创建字符串"c":
String s = "c";
int n = 4;
String sRepeated = IntStream.range(0, n).mapToObj(i -> s).collect(Collectors.joining(""));
Run Code Online (Sandbox Code Playgroud)
Xeo*_*eon 18
对于Java 8,您可以:
int n = 4;
String existing = "...";
String result = existing + String.join("", Collections.nCopies(n, "*"));
Run Code Online (Sandbox Code Playgroud)
输出:
...****
Run Code Online (Sandbox Code Playgroud)
在Java 8 String.join中添加了该方法.但Collections.nCopies即便在Java 5中.
oxy*_*_js 12
用这个
String input = "original";
String newStr = "new"; //new string to be added
int n = 10 // no of times we want to add
input = input + new String(new char[n]).replace("\0", newStr);
Run Code Online (Sandbox Code Playgroud)
Col*_*inD 10
你可以使用Guava的Strings.repeat方法:
String existingString = ...
existingString += Strings.repeat("foo", n);
Run Code Online (Sandbox Code Playgroud)
for(int i = 0; i < n; i++) {
existing_string += 'c';
}
Run Code Online (Sandbox Code Playgroud)
但您应该改用StringBuilder,并节省内存
int n = 3;
String existing_string = "string";
StringBuilder builder = new StringBuilder(existing_string);
for (int i = 0; i < n; i++) {
builder.append(" append ");
}
System.out.println(builder.toString());
Run Code Online (Sandbox Code Playgroud)
最好使用StringBuilder代替,String因为 String 是一个不可变的类,一旦创建就不能修改:在 String 中,每次连接都会使用修改后的字符串创建 String 类的新实例。
| 归档时间: |
|
| 查看次数: |
109872 次 |
| 最近记录: |