Скажем, у меня есть строка 123456789
. Я знаю, что хочу заменить индексы 3-5 строки. (4, 5 и 6). Имейте в виду, что замена, вероятно, не 3 символа, мне может понадобиться 123foobar789
.
Какой лучший способ сделать это?
Скажем, у меня есть строка 123456789
. Я знаю, что хочу заменить индексы 3-5 строки. (4, 5 и 6). Имейте в виду, что замена, вероятно, не 3 символа, мне может понадобиться 123foobar789
.
Какой лучший способ сделать это?
Во-первых, вы не можете сделать это 1 так как a String
является неизменным в java.
Однако вы можете создать новый объект String с нужным значением, используя метод String#substring()
:
String s = "123456789";
String newString = s.substring(0, 3) + "foobar" + s.substring(3+3);
System.out.println(newString);
Если вы хотите достичь этого эффективно, вы можете избежать создания некоторых промежуточных строк, используемых методом concatinating и substring()
.
String s = "123456789";
StringBuilder sb = new StringBuilder();
char[] buff = s.toCharArray();
sb.append(buff , 0, 3).append("foobar");
sb.append(buff,3+3,buff.length -(3+3));
System.out.println(sb.toString());
Однако, если это не сделано в очень сложном цикле - вы, вероятно, должны игнорировать его и придерживаться первого и более читаемого решения.
(1) не так легко, это можно сделать с помощью отражения - но этого следует избегать.
Попробуйте ввести код ниже. С помощью StringBuffer вы делаете замену. StringBuffer заменить java docs
public static void main(String[] args) {
StringBuffer buf = new StringBuffer("123456789");
int start = 3;
int end = 6;
buf.replace(start, end, "foobar");
System.out.println(buf);
}
}
После выполнения вышеперечисленной программы будет выведено.
123foobar789
Если повторения данной подстроки нет, попробуйте это.
String s ="123456789";
s = s.replace(s.substring(3,6), "foobar");
Если есть повторение данной подстроки, попробуйте это.
String s ="123123123";
s= s.substring(0,3) + "foobar" + s.substring(6,s.length());