C. Java

java 자바 문자열 관련 클래스

sfeg 2017. 7. 2. 22:41


String 클래스

substr 과 substring 차이

문자열에서 특정 위치 안에 있는 문자열을 자르는 함수로 substr 과 substring 이 있다.
substr 과 substring 은 2개의 인자를 지정할 수 있다.
첫번째 인자는 전체 문자열에서 자를 위치를 지정한다. 
두번째 인자는 반환할 문자열 갯수를 지정할 수 있는데,

substr은 지정한 문자열 인덱스부터 시작하여 반환할 문자열 갯수를 구하여 문자열을 리턴하지만,

substring은 지정한 문자열 인덱스부터 시작하여 전체 문자열에서 반환할 갯수를 구하여 문자열을 리턴한다.

시작 인덱스는 각각 0 부터 시작된다.

var Index = "0123456789";
Index.substr(2,4);
Index.substring(2,4);



substr 과 substring 은 각기 1개의 인자를 지정할 수도 있는데, 이 때는 시작문자열인덱스부터 문자열 전체 길이까지 구하여 문자열을 리턴한다. 그러므로 결과값 또한 같다.

var Index = "0123456789";
Index.substr(3);
Index.substring(3);

 

 

String 클래스로 객체 생성하는 방법 => 1. String  str1 = "Java";

                                                        2. String  str2 = new String("Java");
 

차이점 => String  s1 = "Java";
               String  s2 = "Java";              
               s1==s2  -> true ("Java"가 메모리에 할당되고 s1과 s2 두레퍼런스가 가르키기때문에
                                       두 값은 같다)
 
               String  tr1 = new String("Java");
               String  tr2 = new String("Java");
               tr1 == tr2  -> false (객체가 생성되면 개별적인 공간에 할당되기 때문에..)
 
 
메소드  =>  lenth()                            :길이 
                 equals()                         :내용비교
                 substring(int beginindex)  :beginindex값부터 문자열마지막까지 문자열을 반환해준다.
                 concat(String str)
                 replace(char old, char new)    :기존의 old로 표시된 모든 문자를 new로 표시된 문자로
                                                              모두 바꾸어준다.
                 toLowerCase(),toUpperCase()
                 indexOf(int ch)       : 주어진 문자가 존재하는 위치를 알려줌. 없으면 -1을 되돌린다.
                 lastIndexOf(int ch)  :                    ''             마지막위치를 알려줌.          ''
                 trim()                    : 문자열의 시작과 끝 사이에 있는 공백을 없앤다.
 
 
 
StringBuffer 클래스
: String 클래스와 가장 큰 차이점은 메서드에 의해 처리된 결과를 저장할 문자열을 생성하는 것이
  아니고  메모리상의 자신의 값이 수정된다는 점
 
메소드 => length()            : 스트링버퍼 클래스 객체에 저장된 문자의 수를 반환한다.
               capacity()         : 스트링버퍼 클래스 객체에 할당된 문자 배열의 크기를 반환한다.
               append(String str)              : str문자열을 스트링 버퍼에 추가한다.
               insert (int offset, String str)  : 정해진 위치에   str로 주어진 문자열을 추가한다.
               toString()                           :
               delete(int start, int end)       : start부터 (end-1) 위치의 글자를 지운다.
               deleteCharAt(int index)        : index위치의 글자를 지운다.
               replace(int start, int end, String str) :  start부터 (end-1) 위치의 글자를 지우고
                                                                     str 문자열을 끼워넣는다.
               reverse()                          : 문자열의 순서를 뒤집는다.
 
 
ex) class test{
           public static void main(String[] arg){
 
                 StringBuffer str01 = new StringBuffer();
                
                 str01.append("Java");                     //현재 문자열에 끝에 첨부
                 str01.append("Programming");      //현재 문자열에 끝에 첨부                  
                 System.out.println("str01=" + str01.toString() );
        
                 str01.replace(0,4,"MFC");            //0~3사이의 내용을 MFC로 대체
 
                 String str02 = str01.substring(3);         //지정한 위치부터 마지막 문자까지 반환
 
                 str01.deleteCharAt(0);                   //0번째 위치의 문자를 지운다.
 
                 str01.reverse();                              //문자열의 순서를 뒤집는다.
           }
      }
 
 
 
StringTokenizer클래스
=>  문자열을 파싱(여러개의 문자열로 나누는 작업)하여 다양한 형태의 토큰을 처리할수 있다.
 
생성자   StringEokenizer(String str)                                    
            StringEokenizer(String str, String delimeters)       str은 파싱문자열이며 delimeters는 토큰 분리자입니다.
 
메소드  countToken()                   //문자열에 있는 토큰의 개수 반환
           hasMoreToken()              //토큰이 있으면 true,  없으면 false값을 반환
           nextToken()                    //다음토큰 문자열을 반환
           nextToken(String delimiters)  //delimiters토큰 분리자를 설정하고 다음 토큰 문자열 반환
 
 
ex) import java.util.*
      class test{
             punlic static void main(String[] arg){
                   
                       StringTokenizer  str = new StringTokenizer("도연#,혜수#지현#태희" , "#");
                       
                        int cnt = srt.countTokens();  // 파싱된 문자열이 모두 몇개인지...
                      
                       while(str.hasMoreToken()){                    //토큰이 있으면
                             System.out.println(str.nextToken());    //차례대로 파싱된 문자열을 얻어온다.
                       }
             }
      }