Java

Split()

bittersweet 2023. 7. 21. 00:01
반응형
  • Split()?
    • java.lang.String 클래스의 메소드이며, 특정 문자를 기준으로 문자열을 분리하여 배열에 저장한다.
    • public String[] split(String regex)
    • public String[] split(String regex, int limit)
      • 위와 같은 형태를 띤다.
        •  limit > 0 일 경우
          • limit - 1번 만큼 적용됨. (4라면 3번만 자르고 끝.)
          • return 배열의 마지막 원소는, 자르고 난 문자열 나머지를 값이 됨. (당연한 말)
        • 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, ., .] 와 같은 형태로 저장이 된다.
  • 구분자 여러 개로 문자열 분리하기?
    • 1) String[] a = str.split("%|@|#|^"); 의 형태로 입력하게 되면, '|' (소문자 L 아님, 숫자 1아님) 기호를 기준으로
          문자열을 분리한다. -> '%', '@', '#', '^' 라는 문자가 있으면, 이 문자를 기준으로 분리하세요~ (라는 뜻)
    • 2) String[] a = str.split("\\.|,|\\+");
          처음 봤을 땐 진짜 무슨 소린지 몰랐다. 하지만, 아래의 표를 보면 어느 정도 이해가 갈 것이다.
          특히, .(dot)과 + 기호는 정규식 안에서 특별한 의미를 가지고 있기 때문에 백슬래시를 두 개 써주어야 한다.
           +) 이외에도 ?, *, (, ), {, }, [, ] 와 같은 문자들은 필히 백슬래시와 함께 이용하도록 하고,
                '[' 와 ']' 는 특히 조심해야 하는 것이, 일단적으로 str.split("\\[\\]"); 라고 입력하면 에러가 발생한다.
                 이러한 경우에는 문자열을 한 번 더 대괄호로 감싸서 표현하여 해결할 수 있다. ex) str.split("[\\[\\]]");
                 그런데 마지막 방법은 0번째 인덱스에 ""(아무것도 없는 빈 칸)을 넣은 채로 return 한다. (이유는 모르겠..)
                 쓸데없는 인덱스도 하나 생기고 배열 길이도 +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