Я пытаюсь заменить некоторую строку в StringBuilder
с использованием метода replace
, но, к сожалению, он работает как метод insert
.Метод замены StringBuilder как метод вставки
Вот код:
public class StringBuilderReplace {
public static void main(String[] args) {
StringBuilder builder = new StringBuilder();
builder.append("Line 1\n");
builder.append("Line 2\n");
builder.append("Line 3\n");
builder.replace(builder.indexOf("Line 2"), builder.indexOf("Line 2"), "Temporary Line\n");
System.out.println(builder.toString());
}
}
Результат для этого кода:
Line 1
Temporary Line
Line 2
Line 3
Что я хочу:
Line 1
Temporary Line
Line 3
Как это сделать, чтобы получить результат я хочу?
Обновление на основе AljoshaBre ответить
Это работает, если изменить код, как этот:
builder.replace(builder.indexOf("Line 2"), builder.indexOf("Line 3"), "Temporary Line\n");
Но новая проблема происходит, что, если следующая строка (для этого примера Line 3
) I не знаете содержание?
Он работает, но как, если я не знаю, если следующая строка 'Line 3'? – Crazenezz
builder.replace (builder.indexOf («Строка 2»), builder.indexOf («Строка 2») + «Строка 2 \ n» .length(), «Временная линия \ n»); – revo
Получите длину строки, которую вы хотите заменить, и добавьте это значение в значение, возвращаемое 'builder.indexOf (« Строка 2 »)' (в этом примере). Это будет ваш последний индекс. – nullpotent