Мне нужно разбить строку на разделитель — и . . Ниже мой желаемый результат.
но мой следующий код не работает.
Я думаю, что вам нужно включить оператор регулярного выражения ИЛИ:
Что у вас будет соответствовать:
[DASH, а затем DOT вместе] -.
не
[DASH или DOT любой из них] — или .
Попробуйте это регулярное выражение «[-.]+» . «+» Обрабатывает последовательные символы разделителя как один. Удалите плюс, если вы этого не хотите.
Вы можете использовать регулярное выражение » W». Это соответствует любому символу, отличному от слова. Требуемая строка:
Используя Guava, вы можете сделать это:
Строка, которую вы даете split , является строковой формой регулярного выражения, поэтому:
Это означает, что нужно разбить любой символ в [] (нам нужно избежать — с обратным слэшем, потому что он является специальным внутри [] , и, конечно, нам нужно избежать обратного слэша, потому что это строка). (Наоборот, . обычно является специальным, но не является специальным внутри [] .)
Я бы использовал Apache Commons:
Он будет разбит на любой из указанных разделителей, в отличие от StringUtils.splitByWholeSeparator(str, separator) , который использует полную строку в качестве разделителя
Для двухсимвольной последовательности в качестве разделителей «И» и «ИЛИ» это должно быть выполнено. Не забывайте обрезать при использовании.
Вы также можете указать регулярное выражение как аргумент в методе split(). Ниже приведен пример.
Лучше использовать что-то вроде этого:
Добавьте еще несколько символов в качестве образца. Это самый безопасный способ использования, поскольку обрабатываются методы . и ‘ .
Попробуйте этот код:
ИМХО, регулярные выражения иногда могут быть излишними, поскольку их может быть очень трудно отлаживать
Если мне нужна лучшая производительность, чем указанная выше, я полагаюсь на Webpack или LLVM + emscripten для оптимизации.
Если вы знаете, что sting всегда будет в одном формате, сначала разделите строку на основе . и сохраните строку в первом индексе переменной. Затем разделите строку во втором индексе на основе — и сохраните индексы 0, 1 и 2. Наконец, разделите индекс 2 предыдущего массива на основе . , и вы должны были получить все соответствующие поля.
Обратитесь к следующему фрагменту:
Посмотрите другие вопросы по меткам java regex или Задайте вопрос
В настоящее время мой код только отделяет слова от пробелов, но я также хочу отделить «.». и тоже. Вот мой текущий код:
Например, если пользователь ввел «хлеб, молоко, яйца» или «Um. awkss», он рассмотрит это одно слово, и я хочу, чтобы каждое слово было его собственным словом.
И пока я здесь, я не могу получить
Вы можете разделить это регулярное выражение
Кронштейны используются, когда вам нужен любой из символов в скобках, + означает, что символы могут быть объединены один или несколько раз. для создания одного единственного разделителя, то есть space and period или comma and space .
Как правильно ее разбить на массив?
1 ответ 1
Метод split в качестве первого аргумента принимает регулярное выражение, соотвестственно там можно перечислить несколько разделителей, разделенных в свою очередь символом | :
Если Вам нужно тоько имя файла, разделенное по точкам (путь не нужен), то:
Источник: