728x90
반응형
Splitting string with pipe character ("|")
아무생각없이 자바 내장함수 split로 "|" 문자를 기준으로 자르다가 이 글을 쓰게됐습니다.
우선 아래 코드를 보시면,
String str = "abc|def|ghk";
String[] s = str.split("|");
for (int i=0; i<s.length; i++) {
System.out.println(s[i]);
}
}
위 코드를 실행시켜서 얻고 싶은 결과 값은 "abc", "def", "ghk" 입니다.
하지만 실행 결과는 아래와 같습니다.
a
b
c
|
d
e
f
|
g
h
k
이유가 뭘까?
바로 "|" 가 정규표현식으로 인식되기 때문입니다.
"|" 문자로 자른 결과값을 얻고싶다면 split("\\|") 혹은 split("[|]") 를 사용하면됩니다.
String str = "abc|def|ghk";
String[] s = str.split("\\|");
for (int i=0; i<s.length; i++) {
System.out.println(s[i]);
}
실행결과는 아래와 같습니다.
abc
def
ghk
"|" 말고도 정규표현식에서 사용하는 메타문자인 "?", "*", "+", "(", ")", "[", "]" 등을 split에 사용할 때에는
\\(역슬래쉬 두번)를 붙여서 이스케이프(Escape)처리하면됩니다.
728x90
반응형
'java' 카테고리의 다른 글
[java] 임시 비밀번호 생성 (Random vs SecureRandom vs RandomStringUtils) (7) | 2020.10.31 |
---|---|
[java] 예외처리 Exception handling (0) | 2020.10.11 |
[java] 자바 컴파일 : 향상된for이 while로 변경? (0) | 2020.10.11 |
[mybatis] insert/update 쿼리 실행 후 결과값 가져오기 (useGeneratedKeys, keyProperty, selectKey) (0) | 2020.10.09 |
[mybatis] $ 와 # 의 차이 (0) | 2020.10.08 |
댓글