我想在带有for循环的String中插入字符。我知道如何在没有for循环的情况下做到这一点:
String s = "Hello";
String x = " ";
x = s.substring(0, 1) + "*" +s.substring(1, 2) + "*" + s.substring(2,3) +"*"+s.substring(3,4) +"*" +s.substring(4,5);
System.out.println(x);
但是现在谈到循环,我有一个问题。我的方法如下:
String y ="";
for(int i= 0; i<=s.length(); i++){
y = s.substring(0, i) + "*" +s.substring(i);
}
System.out.println(y);
答案 0 :(得分:3)
在Java 8+中,您可以执行以下操作
String x = "Hello";
String result = Stream.of(x.split(""))
.collect(Collectors.joining("*"));
结果H*e*l*l*o
。
基本上,您正在创建长度为1的字符串流,并使用使用*
连接它们的收集器来收集它们。在这种方法中,您不必考虑任何空间情况,如last / first元素或从end等删除额外*。
答案 1 :(得分:3)
String s = "Hello";
String x = String.join("*",s.split(""));
System.out.println(x);
答案 2 :(得分:2)
怎么样:
String input = "TestInput";
StringBuilder b = new StringBuilder();
b.append(input.charAt(0));
for (int i = 1; i < input.length(); i++) {
b.append("*").append(input.charAt(i));
}
System.out.println(b);
}
给出:
T*e*s*t*I*n*p*u*t
这是你想要的吗?
修改强>
Pshemo的建议 - 使用StringJoiner
(Java 8解决方案)
StringJoiner sj = new StringJoiner("*");
for (int i = 0; i < input.length(); i++) {
sj.add(input.substring(i, i + 1));
}
System.out.println(sj.toString());
没有StringBuilder
版本:
String input="TestInput";
String y = "";
for (int i = 0; i < input.length(); i++) {
y += "*" + input.charAt(i);
}
对于你的知识 - 不鼓励使用字符串连接。最好使用StringBuilder
或StringJoiner
答案 3 :(得分:0)
你可以使用charAt
方法,在你的第二个代码中,只要知道字符串边界,而不是StringIndexOutOfBoundException
:
String x = "Hello";
String y =String.valueOf(x.charAt(0));
for(int i= 1; i<x.length(); i++)
y += "*"+x.charAt(i);
System.out.println(y);
我的建议是使用StringBuilder
而不是字符串,它更强高效:
String x = "Hello";
StringBuilder y = new StringBuilder(String.valueOf(x.charAt(0)));
for(int i= 1; i<x.length(); i++)
y.append("*").append(x.charAt(i));
System.out.println(y);
在此示例中,两个代码的输出均为H*e*l*l*o
答案 4 :(得分:0)
public static String insertChar(String str, char character){
char[] charArray=str.toCharArray();
String result="";
for(int i=0;i<charArray.length;i++){
result=result+charArray[i];
if(i<charArray.length-1){
result=result+character;
}
}
return result;
}
的System.out.println(insertChar(&#34;你好&#34;&#39; *&#39;));
答案 5 :(得分:0)
您可以使用循环(如您所述)跟随以下代码段,以将字符添加到字符串。
{{1}}