Управление строками, функции для работы со строками в Java
В этом уроке мы продолжим изучение строк в Java. Основы работы со строками можно посмотреть в уроке «Строки в Java». КлассString
в Java имеет набор методов для управление содержимым строки. Находить символы, подстроки, изменять регистр и другие задачи. Получение символов и подстрок
Вы можете получить символ, находящийся на определенной позиции в строке, вызвав методcharAt()
. Индекс первого символа в строке — 0, последнего — length()
-1. Следующий код возвращает 9 символ строки.String anotherPalindrome = "Niagara. O roar again!";
char aChar = anotherPalindrome.charAt(9);
Нумерация символов начинается с 0, поэтому 9 символ в строке — «О».
Если вам необходимо получить не один символ, а часть строки, можно использовать метод substring
. Метод substring
имеет два варианта:
Следующий код вернет подстроку строки, начиная с 11 символа, но не включая 15, получится слово «roar»String anotherPalindrome = "Niagara. O roar again!"; String roar = anotherPalindrome.substring(11, 15);
Другие методы для управления строками
В таблице приведены некоторые методы для работы со строками и их описание.Поиск символов и подстрок
Рассмотрим еще несколько методов для поиска символов и подстрок. КлассString
содержит методы, которые возвращают позицию символа или подстроки в строке: indexOf()
и lastIndexOf()
. Методы indexOf()
осуществляют поиск с начала строки, lastIndexOf()
— с конца. Если данные методы не нашли совпадений, они возвращают -1. Также класс String
содержит метод contains
, который возвращает true, если заданная последовательность символов содержится в строке. Используйте этот метод, если необходимо узнать о существовании подстроки в строке, а её позиция не важна. В следующей таблице описываются методы indexOf()
и lastIndexOf()
. CharSequence
— это интерфейс, который реализует класс String
, поэтому вы можете передавать строки в метод contains()
.Изменение строк. Замена символов и подстрок
КлассString
имеет несколько методов для вставки символов и подстрок в строку. В таблице описаны методы для замены найденных символов и подстрок. Пример
Следующий классFilename
показывает пример использования методов lastIndexOf()
и substring()
для использования разных частей строки с именем файла. Теперь рассмотрим программу, которая использует класс Filename
:
Программа выведет:
Метод extension
использует метод lastIndexOf
для определения последнего вхождения « .
«. Метод substring
использует это значение для нахождения расширения файла. Ссылка на первоисточник: Управление строками, функции для работы со строками в Java Управление строками, функции для работы со строками в Java. Часть 2javarush.ru
Строки в Java
В этом уроке мы научимся работать со строками в Java. Строки, которые так широко используются в программировании представляют из себя последовательность символов. В языке программирования Java строки — это объект. Платформа Java предоставляет классString
для создания и управления строками. Создание строк
Самый простой способ создания строки выглядит так:String greeting = "Hello world!";
В данном случае «Hello World!» — это строковый литерал (т.е. константа) состоящая из последовательности символов, заключенных в кавычки. Всякий раз, когда компилятор сталкивается со строковым литералом, он создает объект типа String
со значением, в нашем случае, «Hello World!». Как и любой другой объект, строку можно создать, используя ключевое слово new. Класс String
имеет три конструктора, которые позволяют создавать объект, используя разные источники, например, массив символов.
Последняя строка примера выведет на экран hello. Класс String
является неизменяемым, поэтому один раз создав объект, мы не сможем его изменить. Некоторые методы, которые мы рассмотрим ниже, позволяют это исправить. Т.к. String неизменяем, эти методы создают и возвращают новую строку, содержащую результат операции.Длина строки
Методы для получения информации о строке называются методами доступа. Один из этих методовlength()
. Он возвращает количество символов в строке. В следующем примере len будет равно 17:
Переменная palindrome содержит палиндром, т.е. слово или предложение, которое одинаково читается в обе стороны. Напишем небольшую программу, которая перевернет палиндром. Мы будем использовать метод charAt(i)
, который возвращает i-й символ строки, начиная с 0. Программа выведетdoT saw I was toD
Для того чтобы перевернуть строку, мы сначала создали из строки массив символов (первый цикл), затем создали новый массив, в который записали перевернутый первый массив, далее создали новую строку. Класс String
содержит метод getChars()
, который возвращает массив символов, поэтому первый цикл можно заменить строкой:palindrome.getChars(0, len, tempCharArray, 0);
Конкатенация строк
КлассString
реализует метод соединения двух строк:string1.concat(string2);
Данный код вернет новую строку, содержащую string1
и присоединенную к ней string2
. Также можно использовать данный метод со строковыми литералами:"My name is ".concat("Rumplestiltskin");
Чаще строки соединяют с помощью оператора «+
», пример:"Hello," + " world" + "!"
В результате получится строка «Hello, world!». Оператор «+
» широко используется для вывода информации, например:String string1 = "saw I was ";
System.out.println("Dot " + string1 + "Tod");
Код выведет «Dot saw I was Tod». Подобная конкатенация может быть использована в связке с любыми другими объектами. Для объектов не являющимися строками будет вызван метод toString()
, который конвертирует их в строки. Задаем формат вывода строк Мы уже рассматривали методы printf()
и format()
когда форматировали вывод чисел. Класс String
имеет аналогичный метод, который возвращает строку. Используя статический метод format()
можно создать стоковый шаблон, который можно повторно использовать, например, вместо этого:
можно использовать этот код:
На этом всё! 🙂 Ссылка на первоисточник: Строки в Javajavarush.ru
[Перевод] 10 самых задаваемых вопросов о строках в Java
Как сравнивать строки? Что использовать: «==
» или equals()
?
Вкратце, «==
» сравнивает ссылки на строки, а equals()
сравнивает значения, содержащиеся в этих строках. Если вы не хотите проверить, что две строки являются одним и тем же объектом, то вам следует использовать equals()
.
Также было бы неплохо знать концепцию пула строк.
Почему char[]
предпочтительнее строк (String
) для защиты конфиденциальной информации?
Строки неизменяемы. Это значит, что однажды созданная строка не будет изменяться до непосредственного запуска механизма сборщика мусора. В случае с массивом совершенно очевидно, что мы можем изменять его элементы. Таким образом, конфиденциальная информация (например, пароль) не будет храниться в открытом виде в любом месте программы.
Можем ли мы передавать строки в качестве параметра при использовании оператора switch?
Да, начиная с 7-ой версии JDK. Ранее в 6-ой версии, такой возможности не было.
switch (str.toLowerCase()) {
case "a":
value = 1;
break;
case "b":
value = 2;
break;
}
Как конвертировать строку в целочисленное значение?
int n = Integer.parseInt("10");
Аналогично и для остальных примитивных типов Java.
Как разделить строку на строки с разделителем-пробелом?
Проще всего использовать регулярные выражения. «
» выступает как заменитель пробельных символов, таких как «
«, «\t
«, «\r
«, «\n
«.
String[] strArray = aString.split("\\s+");
<Что на самом деле делает метод substring()
?
В JDK 6, метод substring()
показывал часть символов из существующей строки, но не создавал отдельного экземпляра строки. Чтобы создать новую строку, представленную в виде массива символов можно добавить какую-нибудь пустую строку, например, так:
str.substring(m, n) + ""
В результате мы получаем массив символов, являющийся нашей новой строкой. Такой подход иногда может сократить время выполнения кода, потому что сборщик мусора может уничтожить неиспользуемые большие строки и хранить только подстроки.
В Oracle JDK 7, метод substring()
создаёт новый массив символов, не используя уже существующий. Вы также можете взглянуть на диаграмму, представляющую разницу методов substring() в JDK 6 и JDK 7.
String против StringBuilder против StringBuffer
String
против StringBuilder
: StringBuilder
изменяем, это значит, что мы можем изменить его содержание после создания объекта.
StringBuilder
против StringBuffer
: StringBuffer
синхронизирован, это значит, что он функционирует корректно при использовании из нескольких потоков одновременно, но медленнее чем StringBuilder
.
Как повторить строку несколько раз?
В Python, мы можем просто умножить строку на число n
и, тогда, она будет повторяться n раз. В Java, мы можем использовать метод repeat()
из класса StringUtils
библиотеки Apache Commons Lang.
String str = "abcd"; String repeated = StringUtils.repeat(str,3);
Как конвертировать строку в дату?
String str = "Sep 17, 2013";
Date date = new SimpleDateFormat("MMMM d, yy", Locale.ENGLISH).parse(str);
System.out.println(date);
Как посчитать количество вхождений определённого символа в строке?
Используйте класс StringUtils
из библиотеки Apache Commons Lang.
int n = StringUtils.countMatches("11112222", "1");
System.out.println(n);
Это перевод статьи. Оригинал расположен по адресу:
Нашли ошибку/неточность в переводе? Сообщайте об этом в данной теме.
javarush.ru