#java #string-concatenation
#java #строка-конкатенация
Вопрос:
Я хочу объединить строку до последнего вхождения любого символа.
Я хочу сделать что-то вроде этого:
addToString(lastIndexOf(separator), string);
где «ddToString» — это функция, которая добавила бы «строку» перед «lastIndexOf(разделителем)»
Есть какие-нибудь идеи?
Один из способов, о котором я подумал, — это создание string = string separator
. Но я не могу понять, как перегрузить функцию concatenate для объединения после определенного индекса.
Ответ №1:
Вам следует заглянуть в Java api по адресу http://download.oracle.com/javase/7/docs/api / и используйте метод String Classes substring(int beginIndex) после того, как вы найдете индекс указанного вами символа, чтобы
public String addToString(String source, char separator, String toBeInserted) {
int index = source.lastIndexOf(separator);
if(index >= 0amp;amp; index<source.length())
return source.substring(0, index) toBeInserted source.substring(index);
else{throw indexOutOfBoundsException;}
}
Ответ №2:
Попробуйте это:
static String addToString(String source, int where, String toInsert) {
return source.substring(0, where) toInsert source.substring(where);
}
Вероятно, вы захотите добавить некоторую проверку параметров (например, на случай, если символ не найден).
Ответ №3:
Вам нужно использовать StringBuffer
метод append(String)
and. Java внутренне преобразует
между String
символами во временное StringBuffer
, вызывает append(String)
, затем вызывает toString()
и позволяет GC освободить выделенную память.
Комментарии:
1. В сторону: если вы не беспокоитесь о безопасности потоков, вам следует использовать StringBuilder вместо StringBuffer.
2.
insert(String)
Метод, вероятно, был бы проще для этого. Что касается комментария @M.Jessup о безопасности потоков — StringBuffer не помогает, кроме обеспечения атомарного завершения каждого вызова; это редко бывает правильной степенью детализации, которая необходима приложению. Обычно рекомендуется всегда использовать StringBuilder и выполнять любую необходимую синхронизацию на более высоком уровне.
Ответ №4:
Простой способ заключается:
String addToString(String str, int pos, String ins) {
return str.substring(0, pos) ins str.substring(pos);
}