Объединить строку до последнего вхождения любого символа

#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);
}