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
반응형
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
Java에서 ==와 equals ()의 차이점 (0) | 2022.01.06 |
---|---|
Java에서 일반 배열을 만드는 방법 (0) | 2021.12.29 |
Java에서 파일의 파일 확장자를 얻는 방법 (0) | 2021.12.29 |
NullPointerExceptions를 방지하기 위해 어떤 @NotNull Java 주석을 사용해야 할까? (0) | 2021.12.29 |
java.lang.NoClassDefFoundError 해결 방법 : javax / xml / bind / JAXBException (0) | 2021.12.29 |