Мне нужно разделить строку строки на разделитель -
и .
. Ниже приведены мои желаемые результаты.
AA.BB-CC-DD.zip
->
AA
BB
CC
DD
zip
но мой следующий код не работает.
private void getId(String pdfName){
String[]tokens = pdfName.split("-\\.");
}
AA
/BB
/CC
...)Ответы:
Я думаю, что вам нужно включить оператор регулярного выражения ИЛИ :
То, что у вас есть, будет соответствовать:
[DASH, а затем DOT вместе], а
-.
не
[DASH или DOT любой из них]
-
или.
источник
.
в регулярном выражении означает любой символ, кроме новой строки. tutorialspoint.com/java/java_regular_expressions.htm В этом случае, однако, они хотели фактический символ.
. Две обратные косые черты указывают, что вы имеете в виду.
. Обратная косая черта является побегом..split("match1|match2")
(например,split("https|http")
) \\ нужно избегать специального символа.
в указанном выше случаеpdfName.split("\\W");
как показано ниже @Peter Knego answer[-.]
вместо-|\\.
Попробуйте это регулярное выражение
"[-.]+"
. Знак + обрабатывает последовательные символы-разделители как единое целое. Удалить плюс, если вы этого не хотите.источник
-
заключалась в том, что это первая мысль внутри[]
, иначе перед ней должен был стоять обратный слеш (и, конечно, перед ним стоит обратный слеш, мы нужно два, потому что это строковый литерал).Вы можете использовать регулярное выражение "\ W". Это соответствует любому не-словесному символу. Необходимая строка будет:
источник
\W
.Заданная вами строка
split
является формой регулярного выражения, поэтому:Это означает разделение на любой символ в
[]
(мы должны избежать-
обратной косой черты, потому что она особенная внутри[]
; и, конечно, мы должны избежать обратной косой черты, потому что это строка). (И наоборот,.
обычно особенный, но не особенный внутри[]
.)источник
[-.]
он не может быть интерпретирован как диапазон.String[] strings = codes.get(x).split("\\[|\\]| ");
<- код для всех, кто интересуетсяИспользуя Guava, вы можете сделать это:
источник
Для двух последовательностей символов в качестве разделителей «И» и «ИЛИ» это должно работать. Не забудьте обрезать во время использования.
Результат: города = {"СТАМБУЛ", "НЬЮ-ЙОРК", "ПАРИЖ", "ТОКИО", "МОСКВА"}
источник
Я бы использовал Apache Commons:
Импортировать
org.apache.commons.lang3.StringUtils;
Он будет разделен на любой из указанных разделителей, в отличие от
StringUtils.splitByWholeSeparator(str, separator)
которого в качестве разделителя используется полная строкаисточник
источник
Лучше использовать что-то вроде этого:
Добавили несколько других символов в качестве образца. Это самый безопасный способ использования, потому что так
.
и'
лечится.источник
Вы также можете указать регулярное выражение в качестве аргумента в методе split () .. см. Пример ниже ....
источник
Попробуйте этот код:
источник
должно сработать.
источник
Если вы знаете, что строка всегда будет в одном и том же формате, сначала разбейте строку на основе
.
и сохраните строку с первым индексом в переменной. Затем разделите строку во втором индексе на основе-
и сохраните индексы 0, 1 и 2. Наконец, разделите индекс 2 предыдущего массива на основе,.
и вы должны были получить все соответствующие поля.Обратитесь к следующему фрагменту:
источник
pdfName.split(".")
приводит к массиву нулевой длины..
Нужно сбежать как\\.