Вставить строку в начале другой строки
Как вставить строку, заключенную с двойными кавычками в начале StringBuilder и String?
Например:
StringBuilder _sb = new StringBuilder("Sam");
Мне нужно вставить строку "Hello" в начало "Sam", а O/p - "Hello Sam".
String _s = "Jam";
Мне нужно вставить строку "Hello" в начало "Jam", а O/p - "Hello Jam".
Как это сделать?
Ответы
Ответ 1
Первый случай выполняется с помощью метода insert()
:
_sb.insert(0, "Hello ");
Последний случай может быть выполнен с использованием перегруженного + оператора на Строках. Это использует StringBuilder за кулисами:
String s2 = "Hello " + _s;
Ответ 2
Другие ответы объясняют, как вставить строку в начале другого String
или StringBuilder
(или StringBuffer
).
Однако, строго говоря, вы не можете вставить строку в начало другой. Строки в Java неизменны 1.
Когда вы пишете:
String s = "Jam";
s = "Hello " + s;
вы на самом деле вызываете создание нового объекта String
который является объединением "Hello" и "Jam". Вы вообще не вставляете символы в существующий объект String
.
1 - Технически возможно использовать отражение, чтобы разбить абстракцию на объектах String
и изменить их... даже при том, что они неизменны по своему замыслу.Но это действительно плохая идея сделать это.Если вы не знаете, что объект String
был создан явно с помощью new String(...)
он может использоваться совместно, или он может совместно использовать внутреннее состояние с другими объектами String
.Наконец, в спецификации JVM четко указано, что поведение кода, использующего отражение для изменения final
не определено.Мутация объектов String
опасна.
Ответ 3
Конечно, используйте StringBuilder.insert()
:
_sb.insert(0, _s);
Ответ 4
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);
}
Ответ 5
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);
}
}
Ответ 6
Лучше, если вы найдете кавычки с помощью метода indexof()
, а затем добавьте строку за этим индексом.
string s="hai";
int s=s.indexof(""");