- Как разделить строку в Java
- 1. Разделить строку
- 2. Разделить строку по ограничению
- 3. Разделите строку специальными символами регулярного выражения.
- 4. Разделите строку несколькими разделителями
- 5. Разделите строку и Java 8
- 6. Разделите строку пробелом или несколькими пробелами
- 7. Разделить строку на новую строку
- 8. Пример StringTokenizer (устаревший)
- Как разбить строку в Java: обучение на примере
- Синтаксис:
- Параметры:
- Пример разбития строки
- Пример: метод Java String split() с regex и length
- Как разделить строку пробелом
- Как разбить строку в Java
- Синтаксис
- Пример Split String
- Пример: метод Java String split() с регулярным выражением и длиной
- Как разбить строку по пробелу
- Вспомогательные классы для работы со строками в Java
- 1. Класс StringTokenizer
- 2. Метод String.format() и класс StringFormatter
- 3. String Pool
- Метод split
- Синтаксис
- Пример
- Пример
- Пример
- Пример
- Пример
- Пример . Применение
- Пример . Применение
- Пример . Применение
- Пример . Применение
Как разделить строку в Java
Примеры разделения строки Java, как разделить строку с помощью тире, точки, новой строки, пробелов, регулярных выражений, специальных символов и потока Java 8.
Автор: mkyong
Дата записи
В Java мы можем использовать String#split для разделения строки. split() принимает регулярное выражение в качестве аргумента, что означает, что мы можем разделить строку с помощью шаблона регулярного выражения.
- Разделить строку
- Разделить строку по ограничению
- Разделение строки специальными символами регулярного выражения
- Разделите строку несколькими разделителями
- Разделите строку и Java 8
- Разделить строку пробелами
- Разделить строку на новую строку
- СтрокоКенизатор (устаревший)
1. Разделить строку
Ниже приведен пример разделения строки с помощью тире — .
2. Разделить строку по ограничению
split() также поддерживает второй аргумент limit , который управляет длиной возвращаемого массива. Длина массива не будет превышать предел , а последняя запись массива содержит оставшиеся входные данные после последнего совпадающего разделителя.
3. Разделите строку специальными символами регулярного выражения.
3.1 split() принимает регулярное выражение в качестве аргумента, и в регулярном выражении 12 специальных символов имеют особое значение:
- Точка или точка .
- Знак плюс +
- Звездочка или звезда *
- Знак вопроса ?
- Каретка ^
- Знак доллара $
- Открывающая и закрывающая скобки ( и )
- Открывающая квадратная скобка [
- Открывающая фигурная скобка <
- Символ трубы |
- Обратная косая черта \
P.S Обе закрывающие квадратные скобки ] и закрывающая фигурная скобка > это обычный персонаж, не нужно убегать.
3.2 Если мы хотим использовать любой из вышеперечисленных специальных символов в качестве разделителя, мы должны избежать его. Например, если мы хотим разделить строку вертикальной чертой или символом трубы | (специальный символ регулярного выражения), что означает или в регулярном выражении, мы должны избежать символа |, используя один из следующих способов:
3.3 Полный пример разделения строки символом /.
3.4 Полный пример разделения строки символом обратной косой черты \ .
4. Разделите строку несколькими разделителями
Если мы хотим разделить строку на несколько разделителей, просто заключите все разделители в квадратные скобки [ ] .
5. Разделите строку и Java 8
5.1 Для потока Java 8 мы можем использовать .Разделенный поток чтобы разделить строку.
5.2 Мы также можем использовать Arrays.stream для преобразования массива в поток.
6. Разделите строку пробелом или несколькими пробелами
Мы можем использовать \\s+ (один или несколько пробелов) для разделения строки пробелами.
7. Разделить строку на новую строку
В другой операционной системе есть другая новая строка
В примере используется регулярное выражение \\r?\\n для разделения строки на новую строку и API потока для обрезки и фильтрации пустой строки.
8. Пример StringTokenizer (устаревший)
В старые времена разработчики Java использовали класс StringTokenizer для разделения строки.
P.S То Строка#разделить() доступен начиная с JDK 1.4.
Примечание Этот StringTokenizer является устаревшим классом, сохраненным по соображениям совместимости; использование не рекомендуется! Пожалуйста, обновите код до строки#split() .
Источник
Как разбить строку в Java: обучение на примере
В процессе программирования может возникнуть необходимость разбить строку с помощью определенного символа. Метод StrSplit() разбивает строку на массив подстрок с помощью определенного разделителя.
Синтаксис:
Параметры:
- Regex: регулярное выражение, которое применяется к тексту.
- Limit: максимальная длина возвращаемого массива. Если этот параметр не задан или равен нулю, то метод вернет все строки, соответствующие регулярному выражению.
Пример разбития строки
Предположим, что у нас есть переменная strMain. Ее значение состоит из нескольких слов, разделенных запятой: «Alpha, Beta, Gamma, Delta, Sigma».
Выведем каждое слово на отдельной строке и разделим их запятыми. В итоге мы получим пять отдельных строк:
Чтобы реализовать это, используем метод split (). В качестве аргумента передаем разделить. В нашем случае разделителем является запятая. Код примера:
Пример: метод Java String split() с regex и length
Предположим, что необходимо разделить только часть строки, а оставшийся кусок оставить без изменений. Например:
Этого можно добиться путем передачи методу второго аргумента. Взгляните на следующий код:
Delta, Gamma, Sigma
Как разделить строку пробелом
Рассмотрим ситуацию, когда необходимо разделить строку пробелом. Взгляните на пример, приведенный ниже. У нас есть строковая переменная strMain, состоящая из нескольких слов: «Welcome to Guru99».
Дайте знать, что вы думаете по этой теме статьи в комментариях. Мы крайне благодарны вам за ваши комментарии, дизлайки, подписки, отклики, лайки!
Пожалуйста, опубликуйте ваши комментарии по текущей теме материала. За комментарии, дизлайки, подписки, отклики, лайки низкий вам поклон!
Источник
Как разбить строку в Java
StrSplit() позволяет разбить строку на основе определенного разделителя. В основном этот атрибут будет пробелом или запятой (,), с которой вы хотите разбить или разбить строку
Синтаксис
- Регулярное выражение: регулярное выражение применяется к тексту / строке
- Лимит: предел – это максимальное количество значений массива. Если он опущен или равен нулю, он вернет все строки, соответствующие регулярному выражению.
Пример Split String
Предположим, у нас есть строковая переменная с именем strMain из нескольких слов, таких как Alpha, Beta, Gamma, Delta, Sigma – все они разделены запятой (,).
Здесь, если нам нужны все отдельные строки, наилучшим из возможных шаблонов будет разделение на основе запятой. Таким образом, мы получим пять отдельных строк следующим образом:
Используйте метод split для строки, которую нужно разделить, и укажите разделитель в качестве аргумента.
В этом случае разделителем является запятая (,), и результат операции разделения даст вам разделение массива.
Цикл в коде просто печатает каждую строку (элемент массива) после операции разбиения, как показано ниже:
Пример: метод Java String split() с регулярным выражением и длиной
Рассмотрим ситуацию, когда после операции разбиения требуются только первые n элементов, но остальная часть строки должна оставаться такой, как есть. Вывод что-то вроде этого
Это может быть достигнуто путем передачи другого аргумента вместе с операцией split, и это будет предел требуемых строк.
Рассмотрим следующий код –
Как разбить строку по пробелу
Рассмотрим ситуацию, когда вы хотите разбить строку на пробел. Давайте рассмотрим пример здесь; у нас есть строковая переменная с именем strMain, состоящая из нескольких слов Welcome to Guru99.
Источник
Вспомогательные классы для работы со строками в Java
1. Класс StringTokenizer
И еще несколько самых частых сценариев работы со строками. Как разбить строку на несколько частей? Для этого есть несколько способов.
Метод split()
Первый способ разбить строку на несколько частей — использовать метод split() . В него в качестве параметра нужно передать регулярное выражение: специальный шаблон строки-разделителя. Что такое регулярное выражение, вы узнаете в квесте Java Multithreading .
Код | Результат |
---|---|
Результатом будет массив из трех строк: |
Просто, но иногда такой подход избыточен. Если разделителей много, например, «пробел», «enter», «таб», «точка», приходится конструировать достаточно сложное регулярное выражение. Его сложно читать, а значит, в него сложно вносить изменения.
Класс StringTokenizer
В Java есть специальный класс, вся работа которого — разделять строку на подстроки.
Этот класс не использует регулярные выражения: вместо этого в него просто передается строка, состоящая из символов-разделителей. Преимущества этого подхода в том, что он не разбивает сразу всю строку на кусочки, а потихоньку идет от начала к концу.
Класс состоит из конструктора и двух основных методов. В конструктор нужно передать строку, которую мы разбиваем на части, и строку — набор символов, используемых для разделения.
Методы | Описание |
---|---|
Возвращает следующую подстроку | |
Проверяет, есть ли еще подстроки. |
Этот класс чем-то напоминает класс Scanner , у которого тоже были методы nextLine() и hasNextLine() .
Создать объект StringTokenizer можно командой:
Где строка — это строка , которую будем делить на части. А разделители — это строка, каждый символ которой считается символом-разделителем. Пример:
Код | Вывод на экран |
---|
Обратите внимание, что разделителем считается каждый символ строки, переданный второй строкой в конструктор StringTokenizer .
2. Метод String.format() и класс StringFormatter
И еще один интересный метод класса String — format() .
Допустим, у вас есть различные переменные с данными. Как вывести их на экран одной строкой? Например, у нас есть данные (левая колонка) и желаемый вывод (правая колонка):
Код | Вывод на экран |
---|
Скорее всего, ваш код будет выглядеть примерно так:
Код программы |
---|
Такой код не слишком читабельный. Более того, если бы имена переменных были длиннее, код стал бы еще сложнее:
Код программы |
---|
Не очень читаемо, не так ли?
Однако в реальных программах такая ситуация встречается часто, поэтому я хочу рассказать о способе, как проще и короче записать этот код.
String.format
У класса String есть статический метод format() : он позволяет задать шаблон объединения строки с данными. Общий вид этой команды такой:
Код | Результат |
---|
В метод format() первым параметром передают строку-шаблон, которая содержит весь нужный текст, а в местах, где нужно вставлять данные, написаны специальные символы типа %d , %s и т.п.
Вот эти %s и %d метод format() и заменяют на параметры, которые идут следом за строкой-шаблоном. Если нужно подставить строку, мы пишем %s , если число — %d . Пример:
Код | Результат |
---|---|
s будет равна «a=1, b=4, c=3» |
Вот краткий список параметров, которые можно использовать внутри шаблона:
Символ | Обозначение |
---|---|
String | |
целое число: byte , short , int , long | |
вещественное число: float , double | |
boolean | |
char | |
Date | |
Символ % |
Эти параметры указывают на тип данных, но есть еще параметры, которые указывают на порядок данных. Чтобы взять параметр по его номеру (нумерация начинается с единицы), нужно записать % 1$ d вместо %d . Пример:
Код | Результат |
---|---|
s будет равна «a=13, b=12, c=11» |
%3$d возьмет 3-й параметр-переменную, %2$d возьмет второй параметр. %d возьмет самый первый параметр-переменную. Параметры шаблона %s , %d обращаются к переменным-параметрам независимо от параметров шаблона типа %3$d или %2$s
3. String Pool
Все строки, которые были заданы в коде в виде литералов, во время работы программы хранятся в памяти в так называемом StringPool . StringPool — это специальный массив для хранения строк. Цель его создания — оптимизация хранения строк:
Во-первых, строки, заданные в коде, нужно все-таки где-то хранить. Код — это команды, а данные (тем более такие большие как строки) нужно хранить в памяти отдельно от кода. В коде фигурируют только ссылки на объекты-строки.
Во-вторых, все одинаковые литералы можно хранить в памяти только один раз. Так оно и работает. Когда код вашего класса загружается Java-машиной, все строковые литералы добавляются в StringPool , если их там еще нет. Если уже есть, просто используется ссылка на строку из StringPool .
Поэтому если в своем коде вы присвоите нескольким String -переменным одинаковые литералы, переменные будут содержать одинаковые ссылки. В StringPool литерал будет добавлен только один раз, во всех остальных случаях будет браться ссылка на уже загруженную в StringPool строку.
Как это примерно работает:
Код | Работа с StringPool |
---|
Именно поэтому переменные a и b будут хранить одинаковые ссылки.
Метод intern()
Ну и самое интересное: вы можете программно добавить любую строку в StringPool . Для этого нужно просто вызвать метод intern() у String -переменной.
Метод intern() добавит строку в StringPool , если ее еще там нет, и вернет ссылку на строку из StringPool .
Если в StringPool добавить с помощью метода intern() две идентичные строки, метод вернет одинаковые ссылки. Это можно использовать чтобы сравнивать строки по ссылке. Пример:
Код | Примечание |
---|
Вряд ли вы будете часто пользоваться этим методом, однако о нем любят спрашивать на собеседованиях , поэтому лучше о нем знать, чем не знать.
Источник
Метод split
Метод split осуществляет разбиение строки в массив по указанному разделителю.
Разделитель указывается первым необязательным параметром. Если он не задан — вернется вся строка. Если он задан как пустые кавычки » — то каждый символ строки попадет в отдельный элемент массива.
Вторым необязательным параметром можно указать максимальное количество элементов в получившемся массиве (см. примеры).
Синтаксис
Пример
Пусть дана некоторая строка с дефисами. Давайте разобьем эту строку в массив по разделителю ‘-‘ :
Результат выполнения кода:
Пример
Давайте опять разобьем строку по разделителю ‘-‘ , однако вторым параметром укажем максимальное количество элементов в получившемся массиве, например, 2 .
В этом случае в массив запишется только 2 элемента:
Результат выполнения кода:
Пример
Давайте каждый символ строки запишем в отдельный элемент массива:
Результат выполнения кода:
Пример
Давайте первые 3 символа строки запишем в отдельный элемент массива:
Результат выполнения кода:
Пример
Сейчас с помощью split разбивается строка с числами. Обратите внимание на то, что в результате получится массив строк [‘1’, ‘2’ , ‘3’ , ‘4’ , ‘5’ ], а не массив чисел [1, 2 , 3 , 4 , 5]:
Результат выполнения кода:
Пример . Применение
Давайте перевернем символы строки в обратном порядке. Для этого разобьем строку в массив с помощью split по разделителю » (это разместит каждый символ строки в отдельный элемент массива), перевернем этот массив с помощью reverse и затем сольем перевернутый массив обратно с помощью join :
Результат выполнения кода:
Пример . Применение
Упростим решение предыдущей задачи — сольем все команды в цепочку:
Результат выполнения кода:
Пример . Применение
Дана строка с цифрами. Найдем сумму цифр из этой строки. Для этого разобьем строку в массив, а затем переберем этот массив и найдем его сумму. Нас ждет подвох: split возвращает строки, поэтому при суммировании преобразуем эти цифры-строки в настоящие числа с помощью Number :
Результат выполнения кода:
Пример . Применение
Дано число. Давайте запишем каждую цифру этого числа в отдельный элемент массива. Тут есть подвох — split применяется только к строкам, а у нас число. Преобразуем вначале число к строке с помощью String , а затем применим split :
Источник