我检查了许多关于连接许多字符串在Java中的最佳方法的讨论。
据我所知,Stringbuilder比+运算符效率更高。
不幸的是,我的问题有点不同。
给定字符串:"AAAAA"
,我们如何将它与char '_'
的n次连接起来,知道'_'
必须在String" AAAAA&#34之前到来;
如果 n 等于 3 和str="AAAAA"
,则结果必须是字符串" ___ AAAAA"
String str = "AAAAA";
for (int i=0;i<100;i++){
str="_"+str;
}
在我的程序中,我有一个Longs String,所以我必须使用有效的方法。
谢谢
EDIT1: 正如我已经阅读了一些解决方案,我发现我只要求一个案例,所以我到达了这个解决方案我觉得很好:
public class Concatenation {
public static void main(String[] args) {
//so str is the String that i want to modify
StringBuilder str = new StringBuilder("AAAAA");
//As suggested
StringBuilder space = new StringBuilder();
for (int i = 0; i < 3; i++) {
space.append("_");
}
//another for loop to concatenate different char and not only the '_'
for (int i = 0; i < 3; i++) {
char next = getTheNewchar();
space.append(next);
}
space.append(str);
str = space;
System.out.println(str);
}
public static char getTheNewchar(){
//normally i return a rondom char, but for the case of simplicity i return the same char
return 'A';
}
}
答案 0 :(得分:4)
转到char数组,分配正确的大小,填充数组,然后将其总结为字符串。 无法击败那个。
public String concat(char c, int l, String string) {
int sl = string.length();
char[] buf = new char[sl + l];
int pos = 0;
for (int i = 0; i < l; i++) {
buf[pos++] = c;
}
for (int i = 0; i < sl; i++) {
buf[pos++] = string.charAt(i);
}
return String.valueOf(buf);
}
答案 1 :(得分:4)
在Java中连接字符串的最佳方法:你没有....字符串在Java中是不可变的。每次连接时,都会生成一个新的Object。请改用StringBuilder
。
StringBuilder sb = new StringBuilder();
for (int i=0;i<100;i++){
sb.append("_");
}
sb.append("AAAAA");
String str = sb.toString();
答案 2 :(得分:1)
我做的事情如下:
import java.util.Arrays;
...
int numUnderbars = 3;
char[] underbarArray = new char[numUnderbars];
Arrays.fill(underbarArray, '_');
String output = String.valueOf(underbarArray) + "AAAA";
但实际情况是,所提出的任何解决方案在运行时都可能会有些不同。
答案 3 :(得分:0)
如果你不喜欢写循环使用
org.apache.commons.lang.StringUtils class repeat(str,n) method.
您的代码会更短:
String str=new StringBuilder(StringUtils.repeat("_",n)).append("AAAAA").toString();
顺便说一句: 该问题的实际答案在该重复方法的代码中。