[java] 여러 구분 기호와 함께 String.split () 사용

문자열 기반을 구분 기호 -및 로 분리해야합니다 .. 아래는 내가 원하는 결과입니다.

AA.BB-CC-DD.zip ->

AA
BB
CC
DD
zip 

그러나 다음 코드는 작동하지 않습니다.

private void getId(String pdfName){
    String[]tokens = pdfName.split("-\\.");
}



답변

정규식 OR 연산자 를 포함해야한다고 생각합니다 .

String[]tokens = pdfName.split("-|\\.");

일치하는 항목 :
[DASH 또는 DOT 중 하나
]가 -.
아닌
[DASH 와 함께 DOT] -또는.


답변

이 정규식을 사용해보십시오 "[-.]+". + after는 연속 분리 문자를 하나로 취급합니다. 원하지 않는 경우 플러스를 제거하십시오.


답변

정규식 “\ W”를 사용할 수 있습니다. 이는 단어가 아닌 문자와 일치합니다. 필요한 줄은 다음과 같습니다.

String[] tokens=pdfName.split("\\W");


답변

제공 split하는 문자열은 정규식의 문자열 형식이므로 다음과 같습니다.

private void getId(String pdfName){
    String[]tokens = pdfName.split("[\\-.]");
}

즉 , 내부의 특수 문자 이므로 백 슬래시 []로 이스케이프 처리해야합니다 . 물론 문자열이기 때문에 백 슬래시를 이스케이프 처리해야합니다. (반대로, 일반적으로 특별하지만 내부 에서는 특별 하지 않습니다 .)-[].[]


답변

구아바 를 사용하면 다음과 같이 할 수 있습니다.

Iterable<String> tokens = Splitter.on(CharMatcher.anyOf("-.")).split(pdfName);


답변

델리 미터 “AND”및 “OR”과 같은 두 문자 시퀀스의 경우이 작업을 수행해야합니다. 사용하는 동안 손질하는 것을 잊지 마십시오.

a
 String text ="ISTANBUL AND NEW YORK AND PARIS OR TOKYO AND MOSCOW";
 String[] cities = text.split("AND|OR"); 

결과 : 도시 = { “ISTANBUL”, “NEW YORK”, “PARIS”, “TOKYO”, “MOSCOW”}


답변

Apache Commons를 사용합니다.

수입 org.apache.commons.lang3.StringUtils;

private void getId(String pdfName){
    String[] tokens = StringUtils.split(pdfName, "-.");
}

StringUtils.splitByWholeSeparator(str, separator)전체 문자열을 구분 기호로 사용 하는 것이 아니라 지정된 구분 기호로 분할됩니다.