如何在StringBuilder和String的开头插入用双引号括起来的字符串?
例如:
StringBuilder _sb = new StringBuilder("Sam");
我需要在“Sam”的开头插入字符串“Hello”,O / p是“Hello Sam”。
String _s = "Jam";
我需要在“Jam”的开头插入字符串“Hello”,O / p是“Hello Jam”。
如何实现这一目标?
答案 0 :(得分:50)
第一种情况是使用insert()
方法完成的:
_sb.insert(0, "Hello ");
后一种情况可以使用字符串上的重载+运算符完成。这在后台使用StringBuilder:
String s2 = "Hello " + _s;
答案 1 :(得分:11)
其他答案解释了如何在另一个String
或StringBuilder
(或StringBuffer
)的开头插入字符串。
但是,严格地说,您不能将字符串插入另一个字符串的开头。 Java中的字符串是不可变的 1 。
当你写:
String s = "Jam";
s = "Hello " + s;
您实际上正在创建一个新的String
对象,它是“Hello”和“Jam”的串联。实际上,您根本没有将字符插入到现有的String
对象中。
1 - 技术上可以使用反射来打破String
对象的抽象并改变它们......即使它们是不可变的按设计。但要做到这一点是非常糟糕的主意。除非您知道String
对象是通过new String(...)
显式创建的,否则它可以共享,或者它可以与其他String
对象共享内部状态。最后,JVM规范明确指出使用反射来更改final
的代码的行为是未定义的。 String
物体的突变是危险的。
答案 2 :(得分:6)
当然,请使用StringBuilder.insert()
:
_sb.insert(0, _s);
答案 3 :(得分:0)
private static void appendZeroAtStart() {
String strObj = "11";
int maxLegth = 5;
StringBuilder sb = new StringBuilder(strObj);
if (sb.length() <= maxLegth) {
while (sb.length() < maxLegth) {
sb.insert(0, '0');
}
} else {
System.out.println("error");
}
System.out.println("result: " + sb);
}
答案 4 :(得分:-6)
import java.lang.StringBuilder;
public class Program {
public static void main(String[] args) {
// Create a new StringBuilder.
StringBuilder builder = new StringBuilder();
// Loop and append values.
for (int i = 0; i < 5; i++) {
builder.append("abc ");
}
// Convert to string.
String result = builder.toString();
// Print result.
System.out.println(result);
}
}
答案 5 :(得分:-13)
最好使用indexof()
方法找到引号,然后在该索引后面添加一个字符串。
string s="hai";
int s=s.indexof(""");