[Java] 문자열 자르기(Substring, Split) 사용법 & 예제

자바 스트링 클래스에는 사용하기 편리하도록 만들어놓은 여러가지 함수가 있습니다. 이번 포스팅에서는 그 함수들중 문자열 자르기에 관련된 함수들을 한번 알아보도록 하겠습니다.

     SubString 

    문자열 자르기하면 가장먼저 생각나는 함수입니다. 문자열 함수에 익숙해지시면 SubString함수와 다른함수들을 섞어서 정말 다양하게 활용할 수 있는데요. 사용법에 대해 한번 알아보도록 하겠습니다. 활용예제로는 마지막 3글자 자르기, 특정문자 이후의 문자열자르기, 특정(단어) 부분만 자르기 를 준비했습니다.


    우선 문자열을 자르기에 앞서 문자열이 어떻게 배치되어있는지 Index값부터 살펴야 문자열을 자를 수 있겠죠?

    SubString

    String 클래스 자체가 char을 여러개 붙여놓은 효과를 주기때문에 String 클래스의 해당 Index값은 다음과 같습니다. String = char배열이라고 생각하셔도 무방합니다.


    사용법

    //사용법
    String.substring(start) //문자열  start위치부터 끝까지 문자열 자르기
    String.substring(start,end) //문자열  start위치 부터 end전까지 문자열 발췌
    		
    
    //예제
    String str = "ABCDEFG"; //대상 문자열
    /*A=0 B=1 C=2 D=3 E=4 F=5 G=6의 index를 가진다.*/
    		
    str.substring(3); 
    /*substring(시작위치) 결과값 = DEFG*/
    
    str.substring(3, 6); 
    /*substring(시작위치,끝위치) 결과값 = DEF*/
    


    활용예제

    //1. 마지막 3글자 자르기
    String str = "ABCDEFG"; 
    String result = str.substring(str.length()-3, str.length());
    System.out.println(result)
     //결과값EFG
    
    
    
    //2. 특정문자 이후의 문자열 제거
    String str = "ABCD/DEFGH";
    String result = str.substring(str.lastIndexOf("/")+1);
    System.out.println(result); 
    //결과값 DEFGH
    
    
    
    //3. 특정단어(부분)만 자르기
    String str = "바나나 : 1000원, 사과 : 2000원, 배 : 3000원";
    String target = "사과";
    int target_num = str.indexOf(target); 
    String result; result = str.substring(target_num,(str.substring(target_num).indexOf("원")+target_num));
    System.out.println(result+"원"); 
    //결과값 : 사과 : 2000원
    


     Split 

    자바에서는 특정문자를 기준으로 문자열을 잘라서 배열에 넣어주는 Split이라고 하는 아주 편리한 함수가 있습니다. 일부러 데이터베이스에 +#이런식으로 문장끝에 특수기호를 넣어주고 나중에 데이터베이스에서 값을 꺼낼때는 #으로 Split해서 사용하는 등 아주 활용도가 높은 함수입니다.


    그림을 통해 Split함수를 살펴보겠습니다.


    Split


    보시는바와 같이 Split 함수는 String값을 특수기호로 끊어서 배열에 저장시켜줍니다. 활용예제로는 쉼표(,)로 문자열 잘라서 배열에 넣기와 공백으로 문자열 잘라서 배열에 넣기를 준비했습니다.


    사용법

    //문법
    문자열배열 = 대상문자열.split("기준문자");
    
    //예제
    String str = "";
    
    for(int i=0;i<5;i++) {
    str += i+"#";
    }
    		
    String[] array = str.split("#");
    		
    for(int i=0;i<array.length;i++) {
    System.out.println(array[i]);
    }
    
    //결과값 
    //array[0] = 1
    //array[1] = 2
    //array[2] = 3
    //array[3] = 4


    활용예제

    //1. 쉼표(,)로 문자열 잘라서 배열에 넣기
    String str = "A,B,C,D";
    String[] array = str.split(",");
    		    
    //출력				
    for(int i=0;i<array.length;i++) {
    System.out.println(array[i]);
    }
    		  
    //결과값 
    //array[0] = A
    //array[1] = B
    //array[2] = C
    //array[3] = D
    
    /*---------------------------------------------------------------------------------------------*/
    
    //2. 공백(" ")으로 문자열 잘라서 배열에 넣기
    String str = "동해물과 백두산이 마르고 닳도록 하나님이 보우하사 우리나라 만세";
    String[] array = str.split(" ");
    		    
    //출력				
    for(int i=0;i<array.length;i++) {
    System.out.println(array[i]);
    }
    		  
    //결과값 
    //array[0] = 동해물과
    //array[1] = 백두산이
    //array[2] = 마르고
    //array[3] = 닳도록
    //array[4] = 하나님이
    //array[5] = 보우하사
    //array[6] = 우리나라
    //array[7] = 만세

    [Java] 문자열 붙이기(Concat, StringBuffer(Append)) 사용법 & 예제

    [Java] 문자열 치환(Replace) 사용법 & 예제

    [Java] 문자열 공백제거(Trim) 사용법 & 예제

    [Java] 형변환 Casting(문자형,정수형,실수형)

    [Java] Split함수 \n 개행 단위로 문자열 자르기


    댓글(4)

    • KHJ
      2018.04.28 16:48

      좋은글 잘보고갑니다.

    • bnm
      2019.10.29 11:30

      친절한 설명 감사합니다!

    • OJS
      2020.01.18 13:31

      java 의 split 함수는 내부적으로 Pattern 객체를 생성할뿐만 아니라 String 객체또한 새로이 생성하여 return 하므로 성능이 매우 떨어집니다. subString은 반면에 새로운 객체 생성과 같은 불필요한 리소스 낭비가 없어 성능이 더 뛰어나므로 split 보다 subString을 사용하는것을 추천드립니다.

    • curtwolf
      2020.02.19 16:08

      감사합니다. 잘 읽고 갑니다!

    Designed by JB FACTORY