Как в строку добавить символ java
Перейти к содержимому

Как в строку добавить символ java

  • автор:

Добавить символ в строку в заданной позиции

Мы представим три реализации простой функции, которая принимает исходную строку, символ и позицию, в которую нам нужно ее добавить.

Поскольку класс String является окончательным и неизменяемым , функция должна возвращать новую строку с добавленным символом.

2. Использование массива символов ​

Здесь идея состоит в том, чтобы создать новый массив символов и скопировать символы из исходной строки перед заданной позицией.

После этого мы помещаем новый символ в позицию и копируем остальные символы из исходной строки в последующие позиции нового массива.

Наконец, мы создаем нужную строку из этого массива.

 public String addChar(String str, char ch, int position)    int len = str.length();   char[] updatedArr = new char[len + 1];   str.getChars(0, position, updatedArr, 0);   updatedArr[position] = ch;   str.getChars(position, len, updatedArr, position + 1);   return new String(updatedArr);   > 

По сравнению с двумя другими методами, это низкоуровневый подход к проектированию, обеспечивающий наибольшую гибкость.

3. Использование метода подстроки ​

Более простой и высокоуровневый подход — использовать метод substring() класса String . Он подготавливает строку путем объединения:

  1. Подстрока исходной строки перед позицией
  2. Новый персонаж
  3. Подстрока исходной строки после позиции
 public String addChar(String str, char ch, int position)    return str.substring(0, position) + ch + str.substring(position);   > 

Хотя приведенный выше код более удобочитаем, у него есть недостаток, заключающийся в том, что он создает ряд временных объектов для определения результата. Поскольку String является неизменяемым классом, каждый вызов его метода substring() создает новый экземпляр String .

Наконец, когда мы объединяем части, компилятор создает объект StringBuilder для добавления их по одной. Каждый объект String и StringBuilder выделяет отдельные области памяти для своего внутреннего массива символов.

Эта реализация также должна трижды копировать все символы из одного массива в другой.

Если нам нужно вызвать метод огромное количество раз, временные объекты могут заполнить динамическую память, и это будет очень часто запускать сборщик мусора. Это также может в некоторой степени повлиять на производительность.

4. Использование StringBuilder ​

StringBuilder — это служебный класс, предоставляемый библиотекой Java для создания объектов String и управления ими различными способами.

Мы можем реализовать ту же функциональность, используя метод insert() класса StringBuilder :

 public String addChar(String str, char ch, int position)    StringBuilder sb = new StringBuilder(str);   sb.insert(position, ch);   return sb.toString();   > 

Приведенный выше код должен создать только один объект StringBuilder , чтобы вставить символ в позицию. Он выделяет тот же объем памяти, что и исходная строка , но для создания места для нового символа базовый массив сдвигает следующие символы на 1 позицию.

Хотя использование StringBuilder может быть медленнее, оно не требует памяти для инициализации временных объектов. Мы также получаем простой и читаемый код.

5. Вывод​

В этой статье мы сосредоточились на нескольких способах добавления символа в объект String в Java . Мы видели, что реализация с использованием массива символов обеспечивает наилучшую производительность, а реализация с использованием метода подстроки обеспечивает более читаемый подход.

Предпочтительным способом реализации решения является использование класса StringBuilder , так как он прост, менее подвержен ошибкам и обеспечивает хорошую и стабильную производительность .

Как обычно, полный исходный код приведенного выше руководства доступен на GitHub .

  • 1. Введение
  • 2. Использование массива символов
  • 3. Использование метода подстроки
  • 4. Использование StringBuilder
  • 5. Вывод

15.32.4. Java – Метод insert()

Метод insert() – в Java вставляет символы в данную строку буфера (StringBuffer). Подстрока добавляется перед указанным индексом.

Синтаксис

Синтаксис метода для каждого типа данных:

public StringBuffer insert(int offset, boolean b) public StringBuffer insert(int offset, char c) public insert(int offset, char[] str) public StringBuffer insert(int index, char[] str, int offset, int len) public StringBuffer insert(int offset, float f) public StringBuffer insert(int offset, int i) public StringBuffer insert(int offset, long l) public StringBuffer insert(int offset, Object obj) public StringBuffer insert(int offset, String str) 

Параметры

Подробная информация о параметрах:

  • параметр зависит от того, что Вы пытаетесь вставить.

Возвращаемое значение

  • В Java insert() возвращает измененный объект StringBuffer.

Пример

public class Test < public static void main(String args[]) < StringBuffer sb = new StringBuffer("абвгдеёжз"); sb.insert(3,"123"); System.out.println(sb); >> 

Получим следующий результат:

абв123гдеёжз 

Оглавление

  • 1. Java – Самоучитель для начинающих
  • 2. Java – Обзор языка
  • 3. Java – Установка и настройка
  • 4. Java – Синтаксис
  • 5. Java – Классы и объекты
  • 6. Java – Конструкторы
  • 7. Java – Типы данных и литералы
  • 8. Java – Типы переменных
  • 9. Java – Модификаторы
  • 10. Java – Операторы
  • 11. Java – Циклы и операторы цикла
  • 11.1. Java – Цикл while
  • 11.2. Java – Цикл for
  • 11.3. Java – Улучшенный цикл for
  • 11.4. Java – Цикл do..while
  • 11.5. Java – Оператор break
  • 11.6. Java – Оператор continue
  • 12. Java – Операторы принятия решений
  • 12.1. Java – Оператор if
  • 12.2. Java – Оператор if..else
  • 12.3. Java – Вложенный оператор if
  • 12.4. Java – Оператор switch..case
  • 12.5. Java – Условный оператор (? 🙂
  • 13. Java – Числа
  • 13.1. Java – Методы byteValue(), shortValue(), intValue(), longValue(), floatValue(), doubleValue()
  • 13.2. Java – Метод compareTo()
  • 13.3. Java – Метод equals()
  • 13.4. Java – Метод valueOf()
  • 13.5. Java – Метод toString()
  • 13.6. Java – Метод parseInt()
  • 13.7. Java – Метод Math.abs()
  • 13.8. Java – Метод Math.ceil()
  • 13.9. Java – Метод Math.floor()
  • 13.10. Java – Метод Math.rint()
  • 13.11. Java – Метод Math.round()
  • 13.12. Java – Метод Math.min()
  • 13.13. Java – Метод Math.max()
  • 13.14. Java – Метод Math.exp()
  • 13.15. Java – Метод Math.log()
  • 13.16. Java – Метод Math.pow()
  • 13.17. Java – Метод Math.sqrt()
  • 13.18. Java – Метод Math.sin()
  • 13.19. Java – Метод Math.cos()
  • 13.20. Java – Метод Math.tan()
  • 13.21. Java – Метод Math.asin()
  • 13.22. Java – Метод Math.acos()
  • 13.23. Java – Метод Math.atan()
  • 13.24. Java – Метод Math.atan2()
  • 13.25. Java – Метод Math.toDegrees()
  • 13.26. Java – Метод Math.toRadians()
  • 13.27. Java – Метод Math.random()
  • 14. Java – Символы
  • 14.1. Java – Метод Character.isLetter()
  • 14.2. Java – Метод Character.isDigit()
  • 14.3. Java – Метод Character.isWhitespace()
  • 14.4. Java – Метод Character.isUpperCase()
  • 14.5. Java – Метод Character.isLowerCase()
  • 14.6. Java – Метод Character.toUpperCase()
  • 14.7. Java – Метод Character.toLowerCase()
  • 14.8. Java – Метод Character.toString()
  • 15. Java – Строки
  • 15.1. Java – Метод charAt()
  • 15.2. Java – Метод compareTo()
  • 15.3. Java – Метод compareToIgnoreCase()
  • 15.4. Java – Метод concat()
  • 15.5. Java – Метод contentEquals()
  • 15.6. Java – Метод copyValueOf()
  • 15.7. Java – Метод endsWith()
  • 15.8. Java – Метод equals()
  • 15.9. Java – Метод equalsIgnoreCase()
  • 15.10. Java – Метод getBytes()
  • 15.11. Java – Метод getChars()
  • 15.12. Java – Метод hashCode()
  • 15.13. Java – Метод indexOf()
  • 15.14. Java – Метод intern()
  • 15.15. Java – Метод lastIndexOf()
  • 15.16. Java – Метод length()
  • 15.17. Java – Метод matches()
  • 15.18. Java – Метод regionMatches()
  • 15.19. Java – Метод replace()
  • 15.20. Java – Метод replaceAll()
  • 15.21. Java – Метод replaceFirst()
  • 15.22. Java – Метод split()
  • 15.23. Java – Метод startsWith()
  • 15.24. Java – Метод subSequence()
  • 15.25. Java – Метод substring()
  • 15.26. Java – Метод toCharArray()
  • 15.27. Java – Метод toLowerCase()
  • 15.28. Java – Метод toString()
  • 15.29. Java – Метод toUpperCase()
  • 15.30. Java – Метод trim()
  • 15.31. Java – Метод valueOf()
  • 15.32. Java – Классы StringBuilder и StringBuffer
  • 15.32.1. Java – Метод append()
  • 15.32.2. Java – Метод reverse()
  • 15.32.3. Java – Метод delete()
  • 15.32.4. Java – Метод insert()
  • 15.32.5. Java – Метод replace()
  • 16. Java – Массивы
  • 17. Java – Дата и время
  • 18. Java – Регулярные выражения
  • 19. Java – Методы
  • 20. Java – Потоки ввода/вывода, файлы и каталоги
  • 20.1. Java – Класс ByteArrayInputStream
  • 20.2. Java – Класс DataInputStream
  • 20.3. Java – Класс ByteArrayOutputStream
  • 20.4. Java – Класс DataOutputStream
  • 20.5. Java – Класс File
  • 20.6. Java – Класс FileReader
  • 20.7. Java – Класс FileWriter
  • 21. Java – Исключения
  • 21.1. Java – Встроенные исключения
  • 22. Java – Вложенные и внутренние классы
  • 23. Java – Наследование
  • 24. Java – Переопределение
  • 25. Java – Полиморфизм
  • 26. Java – Абстракция
  • 27. Java – Инкапсуляция
  • 28. Java – Интерфейсы
  • 29. Java – Пакеты
  • 30. Java – Структуры данных
  • 30.1. Java – Интерфейс Enumeration
  • 30.2. Java – Класс BitSet
  • 30.3. Java – Класс Vector
  • 30.4. Java – Класс Stack
  • 30.5. Java – Класс Dictionary
  • 30.6. Java – Класс Hashtable
  • 30.7. Java – Класс Properties
  • 31. Java – Коллекции
  • 31.1. Java – Интерфейс Collection
  • 31.2. Java – Интерфейс List
  • 31.3. Java – Интерфейс Set
  • 31.4. Java – Интерфейс SortedSet
  • 31.5. Java – Интерфейс Map
  • 31.6. Java – Интерфейс Map.Entry
  • 31.7. Java – Интерфейс SortedMap
  • 31.8. Java – Класс LinkedList
  • 31.9. Java – Класс ArrayList
  • 31.10. Java – Класс HashSet
  • 31.11. Java – Класс LinkedHashSet
  • 31.12. Java – Класс TreeSet
  • 31.13. Java – Класс HashMap
  • 31.14. Java – Класс TreeMap
  • 31.15. Java – Класс WeakHashMap
  • 31.16. Java – Класс LinkedHashMap
  • 31.17. Java – Класс IdentityHashMap
  • 31.18. Java – Алгоритмы Collection
  • 31.19. Java – Iterator и ListIterator
  • 31.20. Java – Comparator
  • 32. Java – Дженерики
  • 33. Java – Сериализация
  • 34. Java – Сеть
  • 34.1. Java – Обработка URL
  • 35. Java – Отправка Email
  • 36. Java – Многопоточность
  • 36.1. Java – Синхронизация потоков
  • 36.2. Java – Межпоточная связь
  • 36.3. Java – Взаимная блокировка потоков
  • 36.4. Java – Управление потоками
  • 37. Java – Основы работы с апплетами
  • 38. Java – Javadoc

Добавить символ в конец строки в Java

В этом посте мы обсудим, как добавить символ в конец строки в Java.

1. Использование String concat (+)

Простое решение для добавления символа в конец строки — использование оператора конкатенации строк. (+) . Это создает новый экземпляр строки, поскольку строки в Java неизменяемы и не могут быть изменены.

public class Main
public static void main ( String [ ] args ) < String str = "C" ; str = str + ch ; System . out . println ( str ) ; // C#

В качестве альтернативы вы можете использовать += оператора, как показано ниже:

public class Main
public static void main ( String [ ] args ) < String str = "C" ; System . out . println ( str ) ; // C#

2. Использование StringBuilder

Другой вероятный способ добавления символа в конец строки — использование StringBuilder . Идея состоит в том, чтобы преобразовать строку в StringBuilder и назовите его append() способ добавления символа. Наконец, преобразовать StringBuilder вернуться к строке.

Обратите внимание, вы должны предпочесть StringBuilder над StringBuffer так как это не синхронизировано и быстрее. Вот как будет выглядеть код:

Как добавить символ к строке?

то есть, код if (number.length() != 4) выполняться не будет.

Однако, если задача в том, чтобы дополнить строку символами нуля ‘0’ , поддерживая длину строки кратной n (4) , следует вычислить нужное число нулей при помощи операции % .

public static String addZeros(String input, int n)
int n = 4; String input = addZeros("3254151235468745112236592", n); char[] chars = input.toCharArray(); for (int i = 0; i

Исходная строка из 25 символов дополнена 3 нулями

3254 1512 3546 8745 1122 3659 2000 

Также при работе с изменяемыми строками лучше использовать StringBuilder / StringBuffer , а не «низкоуровневое» копирование массивов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *