Java не работает метод split

Метод split() в Java не работает на точке (.)

Я подготовил простой фрагмент кода, чтобы отделить ошибочную часть от моего веб-приложения.

Я тестировал его при создании веб-приложения JSF. Я просто хочу знать, почему в приведенном выше коде temp.split(«.») не работает. Утверждение,

ничего не отображается на консоли, означает, что он не проходит цикл. Когда я изменяю аргумент метода temp.split() другим символам, он работает нормально, как обычно. В чем может быть проблема?

ОТВЕТЫ

Ответ 1

java.lang.String.split расщепляется на регулярные выражения, а . в регулярном выражении означает «любой символ».

Ответ 2

Разделяет эту строку вокруг совпадений заданного регулярного выражения.

Точка — это специальный символ в синтаксисе регулярных выражений. Используйте Pattern.quote() для параметра split(), если вы хотите, чтобы раскол был на литерном строчном шаблоне:

Ответ 3

Метод принимает регулярное выражение, а не строку, а точка имеет особое значение в регулярных выражениях. Выбери его так split(«\\.») . Вам нужна двойная обратная косая черта, вторая — первая.

Ответ 4

«» является зарезервированным char в regex

Ответ 5

\\. — простой ответ. Вот простой код для вашей помощи.

Ответ 6

Он отлично работает. Вы читали документацию? Строка преобразуется в регулярное выражение.

. — это специальный символ, соответствующий всем входным символам.

Как и в любом регулярном выражении специального символа, вы бежите с помощью \ . Вам понадобится дополнительный \ для escape-последовательности Java.

Источник

Java split не работает корректно с ^

Я хочу разбить строку для символа ^ , но это не сработает. У меня есть следующий код:

Я получаю следующий вывод:

И если я попытаюсь получить доступ к вектору [1], я получу ошибку IndexOutOfArray.

Мне нужно поставить любой escape-символ, чтобы сплит работал с ^ ?

split принимает регулярное выражение. ^ — это привязка, используемая для сопоставления начала строки в регулярном выражении, поэтому ее необходимо экранировать

Вам нужно избежать этого с помощью \\^ .

^ является особым символом сам по себе, что означает отрицание (в группе, например [^ abc], которая соответствует чему-либо, кроме abc) или якорю для начала строки.

Метод разделения строки java работает с регулярным выражением, а ‘^’ является якорным символом в регулярном выражении, поэтому его нужно экранировать, чтобы рассматривать его как обычный символ:

^ является специальным символом в качестве регулярного выражения, вам нужно его избежать — если я перейду на

Тогда я получаю

Без каких-либо изменений кода.

Так как метод split() ожидает регулярное выражение, если вы хотите разбить на точную строку, не беспокоясь о каких-либо специальных символах регулярного выражения, которые могут содержать, сначала вы должны избегать ее с помощью

String regex = java.util.regex.Pattern.quote(«^»);

Затем разделите на regex . Вся концепция может быть упакована в хороший статический метод:

Источник

Как разделить строку в Java

В этой статье мы рассмотрим, как мы можем разделить строку в Java. Мы также рассмотрим различные примеры и общие проблемы, связанные с использованием метода split ().

Читайте также:  Как настроить механический таймер систек

Автор: Guest Contributor
Дата записи

Вступление

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

Например, мы можем захотеть разделить номер телефона на код страны или данные, импортированные из файла CSV.

В этой статье мы рассмотрим, как разделить строку в Java.

Метод split () (без ограничения)

Этот метод принимает один параметр String в формате регулярного выражения (regex). Этот метод разбивает строку вокруг совпадений данного регулярного выражения.

Синтаксис этого метода таков:

Где параметр regex представляет разделитель, т. Е. на основе того, что мы разделим нашу строку. Имейте в виду, что этот параметр не должен быть чем-то сложным, Java просто предоставляет возможность использования регулярных выражений.

Например, давайте посмотрим, как мы можем разделить эту строку на два отдельных имени:

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

Как только строка разделена, результат возвращается в виде массива строк. Строки в возвращаемом массиве отображаются в том же порядке, что и в исходной строке.

Результаты упаковываются в массив строк. Чтобы получить отдельные имена, мы можем получить доступ к каждому элементу:

Имейте в виду, что этот метод разделит строку на все вхождения разделителя. Например, у нас может быть вход в формате CSV:

Метод Java split () (С ограничением)

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

Параметр limit может принимать одну из трех форм, т. е. он может быть больше, меньше или выше нуля. Давайте посмотрим, что представляет собой каждая из этих ситуаций:

  • Положительный предел – Строка /будет разделена максимум на предел – 1 раз. Помимо этого, остальная часть строки будет возвращена как последний элемент массива, как есть, без разделения. Длина возвращаемого массива всегда будет меньше или равна limit . Отрицательный
  • предел — Строка | разделяется разделителем как можно больше раз, игнорируя конкретный набор отрицательных значений. Подстроки в массиве включают конечные пробелы в исходной строке, если таковые имеются. Когда предел
  • установлен в 0 – Строка | снова разбивается как можно больше раз, и длина результирующего массива не ограничена. Это работает так же, как вызов метода split () , с регулярным выражением в качестве единственного аргумента, как было показано ранее. В этом случае конечные пробелы не возвращаются.

Положительное Предельное Значение

Давайте рассмотрим несколько примеров использования различных ограничений. Во-первых, положительное предельное значение:

При ограничении 4 строка | будет разделена не более трех ( предел – 1 ) раз. Что дает нам массив из четырех элементов (0..3), последним элементом которого является все после третьего разделения:

Если бы мы использовали отрицательный предел в этой же строке:

Git Essentials

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

Строка будет разделена как можно больше раз, и конечные пустые строки будут добавлены в массив:

Фактическое отрицательное значение, которое мы использовали, не принимается во внимание, мы получили бы тот же результат, если бы использовали -150 .

Читайте также:  Как понять что сломался тнвд

Если мы установим ограничение равным 0 , строка снова будет разделена как можно больше раз, но результирующий массив не будет содержать завершающих пустых пробелов:

Это дало бы нам:

Примечание о специальных символах

Как мы упоминали ранее, параметр regex , передаваемый в качестве разделителя в методе split () , является регулярным выражением. Мы должны обязательно избегать специальных символов, если хотим использовать их буквальное значение в качестве разделителя. Например, символ * означает “один или несколько экземпляров следующих символов”.

Если мы хотим разделить строку на один из этих символов, необходимо соблюдать особую осторожность, чтобы избежать этих символов в параметрах метода. Один из способов, которым мы можем это использовать, – использовать обратную косую черту \ . Например:

Разделяет переменную string на символ /. Мы используем здесь две обратные косые черты, так как нам нужно сначала избежать Java-значения обратной косой черты, чтобы обратную косую черту можно было применить к символу |.

Вместо этого мы можем использовать набор символов регулярного выражения, который относится к помещению специальных символов, которые необходимо экранировать, в квадратные скобки. Таким образом, специальные символы обрабатываются как обычные символы. Например, мы могли бы использовать | в качестве разделителя, сказав:

Еще один способ избежать специальных символов-использовать Pattern.quote() :

Вывод

Метод split() класса Java String является очень полезным и часто используемым инструментом. Большинство данных, особенно полученных при чтении файлов, потребовали бы некоторой предварительной обработки, такой как разделение строки, для получения из нее значимой информации.

В этой статье мы рассмотрели, как разделять строки в Java.

Источник

java split несколько разделителей

Мне нужно разбить строку на разделитель — и . . Ниже мой желаемый результат.

но мой следующий код не работает.

Я думаю, что вам нужно включить оператор регулярного выражения ИЛИ:

Что у вас будет соответствовать:
[DASH, а затем DOT вместе] -.
не
[DASH или DOT любой из них] — или .

Попробуйте это регулярное выражение «[-.]+» . «+» Обрабатывает последовательные символы разделителя как один. Удалите плюс, если вы этого не хотите.

Вы можете использовать регулярное выражение » W». Это соответствует любому символу, отличному от слова. Требуемая строка:

Используя Guava, вы можете сделать это:

Строка, которую вы даете split , является строковой формой регулярного выражения, поэтому:

Это означает, что нужно разбить любой символ в [] (нам нужно избежать — с обратным слэшем, потому что он является специальным внутри [] , и, конечно, нам нужно избежать обратного слэша, потому что это строка). (Наоборот, . обычно является специальным, но не является специальным внутри [] .)

Я бы использовал Apache Commons:

Он будет разбит на любой из указанных разделителей, в отличие от StringUtils.splitByWholeSeparator(str, separator) , который использует полную строку в качестве разделителя

Для двухсимвольной последовательности в качестве разделителей «И» и «ИЛИ» это должно быть выполнено. Не забывайте обрезать при использовании.

Вы также можете указать регулярное выражение как аргумент в методе split(). Ниже приведен пример.

Лучше использовать что-то вроде этого:

Добавьте еще несколько символов в качестве образца. Это самый безопасный способ использования, поскольку обрабатываются методы . и ‘ .

Попробуйте этот код:

ИМХО, регулярные выражения иногда могут быть излишними, поскольку их может быть очень трудно отлаживать

Если мне нужна лучшая производительность, чем указанная выше, я полагаюсь на Webpack или LLVM + emscripten для оптимизации.

Если вы знаете, что sting всегда будет в одном формате, сначала разделите строку на основе . и сохраните строку в первом индексе переменной. Затем разделите строку во втором индексе на основе — и сохраните индексы 0, 1 и 2. Наконец, разделите индекс 2 предыдущего массива на основе . , и вы должны были получить все соответствующие поля.

Читайте также:  Как настроить все 20 каналов цифрового телевидения филипс

Обратитесь к следующему фрагменту:

Посмотрите другие вопросы по меткам java regex или Задайте вопрос

В настоящее время мой код только отделяет слова от пробелов, но я также хочу отделить «.». и тоже. Вот мой текущий код:

Например, если пользователь ввел «хлеб, молоко, яйца» или «Um. awkss», он рассмотрит это одно слово, и я хочу, чтобы каждое слово было его собственным словом.

И пока я здесь, я не могу получить

Вы можете разделить это регулярное выражение

Кронштейны используются, когда вам нужен любой из символов в скобках, + означает, что символы могут быть объединены один или несколько раз. для создания одного единственного разделителя, то есть space and period или comma and space .

Как правильно ее разбить на массив?

1 ответ 1

Метод split в качестве первого аргумента принимает регулярное выражение, соотвестственно там можно перечислить несколько разделителей, разделенных в свою очередь символом | :

Если Вам нужно тоько имя файла, разделенное по точкам (путь не нужен), то:

Источник

Подскажите, как разобраться с методом Split()

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Не могу разобраться с методом split
Помогите разобраться с методом split вот для этого: часть скрипта

не могу разобраться со split
Всем доброго времени суток. Никак не получается отсортировать строки. Сортируется лишь 1я строка.

Работа с методом split
Здравствуйте, простите за нубский вопрос, но почему: x = new String(«make are their.

Смотришь в исходники метода split и понимаешь, что начинать следует отсюда.

Добавлено через 10 минут
Вот как раз мой вопрос и состоял в том, чтоб понять, чем отличается \\s+ от \\b или от других распространенных регулярных выражений. Читал в исходниках, не видел там примеров применения. Сложно понять, когда видишь это впервые. Поэтому и прошу немного разъяснить на простых примерах.
Кстати, нашел более доступное объяснение по этому вопросу для java script. Отличаются регулярные выражения в этих языках?

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

Регулярные выражения во всех языках, практически одинаковые.

В таком виде программа работает. Считываемая последовательность символов word вставляется в регулярное выражение, матчер работает.

Но если мы хотим вводить регулярное выражение с консоли, то я меняю программу так:

и в роли word выступает вводимое с консоли выражение [\\w|\\s|\\W]*game[\\w|\\s|\\W]*, где game — слово-поиск,
которое в первом варианте присваивалось переменной word.
Но в таком виде программа не работает.
Пробовал вместо [\\w|\\s|\\W]* в консоли писать простую конструкцию типа .* -тогда работает.

Добавлено через 3 минуты
Возможно ли написание следующего:
Pattern caseIns = Pattern.compile((?i) (?u)»caseIns»); ?

Добавлено через 26 минут
Последний вопрос снимается — попробовал и получилось! Спасибо!

Источник

Оцените статью