프로그래밍 언어/JAVA

Java "."(점)으로 분할 된 문자열을 만드는 방법

Rateye 2021. 12. 29. 11:19
728x90
반응형
질문 : "."로 분할 된 Java 문자열 (점)

이 코드의 두 번째 줄에서 ArrayIndexOutOfBoundsException 이 발생하는 이유는 무엇입니까?

String filename = "D:/some folder/001.docx";
String extensionRemoved = filename.split(".")[0];

작동하는 동안 :

String driveLetter = filename.split("/")[0];

Java 7을 사용합니다.

답변

리터럴 점으로 분할하려면 점을 이스케이프해야합니다.

String extensionRemoved = filename.split("\\.")[0];

그렇지 않으면 정규식에서 분할됩니다 . , "모든 문자"를 의미합니다.
정규식에서 단일 백 슬래시를 만드는 데 필요한 이중 백 슬래시에 유의하십시오.

입력 문자열이 점, 즉 "." ArrayIndexOutOfBoundsException 이 발생합니다. , 점으로 분할 할 때 빈 배열을 생성하는 가장자리 케이스입니다. split(regex) 는 결과에서 모든 후행 공백을 제거하지만 점에서 점을 분할하면 두 개의 공백 만 남으므로 후행 공백이 제거 된 후에는 빈 배열이 남습니다.

ArrayIndexOutOfBoundsException 이 발생하지 않도록하려면 결과 배열의 크기 제한 인 두 번째 매개 변수가있는 split(regex, limit) 의 오버로드 된 버전을 사용하십시오. limit음수 이면 결과 배열에서 후미 공백을 제거하는 동작이 비활성화됩니다.

".".split("\\.", -1) // returns an array of two blanks, ie ["", ""]

즉, filename 이 점 "." , filename.split("\\.", -1)[0] 을 호출하면 공백이 반환되지만 filename.split("\\.")[0]ArrayIndexOutOfBoundsException 합니다.

출처 : https://stackoverflow.com/questions/14833008/java-string-split-with-dot
728x90
반응형