반응형
- Split()?
- java.lang.String 클래스의 메소드이며, 특정 문자를 기준으로 문자열을 분리하여 배열에 저장한다.
- public String[] split(String regex)
- public String[] split(String regex, int limit)
- 위와 같은 형태를 띤다.
- limit > 0 일 경우
- limit - 1번 만큼 적용됨. (4라면 3번만 자르고 끝.)
- return 배열의 마지막 원소는, 자르고 난 문자열 나머지를 값이 됨. (당연한 말)
- limit - 1번 만큼 적용됨. (4라면 3번만 자르고 끝.)
- limit = 0 일 경우
- limit를 설정하지 않았을 때처럼, 제한 없이 모든 부분을 반복하여 분리를 진행함.
- 분리 작업 후, 배열에 마지막 부분에 공백(빈 배열)이 올 경우에는 모두 삭제됨.
ex) String[] a = str.split(".", 0); -> dot을 기준으로 잘랐는데, 문자열이 "good.."일 경우
[g, o, o, d] 와 같은 형태로 저장이 된다. (그냥 없어진다고 생각하자.)
- limit < 0 일 경우
- limit = 0 인 경우와 똑같음. but, 삭제 작업은 이루어지지 않음.
ex) 위와 똑같은 문자열을 분리했을 때, 배열은 [g, o, o, d, ., .] 와 같은 형태로 저장이 된다.
- limit = 0 인 경우와 똑같음. but, 삭제 작업은 이루어지지 않음.
- limit > 0 일 경우
- 위와 같은 형태를 띤다.
- 구분자 여러 개로 문자열 분리하기?
- 1) String[] a = str.split("%|@|#|^"); 의 형태로 입력하게 되면, '|' (소문자 L 아님, 숫자 1아님) 기호를 기준으로
문자열을 분리한다. -> '%', '@', '#', '^' 라는 문자가 있으면, 이 문자를 기준으로 분리하세요~ (라는 뜻) - 2) String[] a = str.split("\\.|,|\\+");
처음 봤을 땐 진짜 무슨 소린지 몰랐다. 하지만, 아래의 표를 보면 어느 정도 이해가 갈 것이다.
특히, .(dot)과 + 기호는 정규식 안에서 특별한 의미를 가지고 있기 때문에 백슬래시를 두 개 써주어야 한다.
+) 이외에도 ?, *, (, ), {, }, [, ] 와 같은 문자들은 필히 백슬래시와 함께 이용하도록 하고,
'[' 와 ']' 는 특히 조심해야 하는 것이, 일단적으로 str.split("\\[\\]"); 라고 입력하면 에러가 발생한다.
이러한 경우에는 문자열을 한 번 더 대괄호로 감싸서 표현하여 해결할 수 있다. ex) str.split("[\\[\\]]");
그런데 마지막 방법은 0번째 인덱스에 ""(아무것도 없는 빈 칸)을 넣은 채로 return 한다. (이유는 모르겠..)
쓸데없는 인덱스도 하나 생기고 배열 길이도 +1 되고,, 매우 불편한 상황이 발생할 수 있으므로 주의하자.
결론 : '.', ',', '+' 라는 문자가 있으면, 이 문자를 기준으로 분리하세요~ 라는 의미를 담고 있는 것이다.
- 1) String[] a = str.split("%|@|#|^"); 의 형태로 입력하게 되면, '|' (소문자 L 아님, 숫자 1아님) 기호를 기준으로
출처 : https://hianna.tistory.com/617
출처 : https://velog.io/@denmark-choco/javascript-%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%9D
반응형
'Java' 카테고리의 다른 글
List와 ArrayList, LinkedList (0) | 2023.07.22 |
---|---|
HashTable/HashMap - getOrDefault (0) | 2023.07.19 |
BufferedReader / StringTokenizer (0) | 2023.07.19 |