티스토리 뷰

StringTokenizer Class

 문자열이 특정 구분자(delimiter)로 연결되어 있을 때, 구분자를 기준으로 하여 문자열을 분리하기 위해서 split() 메소드 또는 StringTokenizer 클래스를 이용할 수 있습니다. 


 split()은 정규 표현식(Regular Expression)으로 구분하고, StringTokenizer는 문자로 구분한다는 차이점이 있습니다.


 split() 메소드 

  String 클래스의 split() 메소드는 다음과 같이 호출되는데, 정규 표현식을 구분자로 해서 문자열을 분리한 후, 배열에 저장하고 리턴합니다.


1
String[] result = "문자열".split("정규표현식");
cs


  다음은 기호로 구분된 이름을 분리하여 출력하는 예제입니다.



 * StringSplitExam.java


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package api;
 
 
public class StringSplitExam {
 
    public static void main(String[] args) {
        String text = "Jack&Nick,Ciel-Tom,Jolie";
        
        String[] names = text.split("&|,|-");
        
        for (String name : names) {
            System.out.println(name);
        }
    }
 
}
 
 
 
cs








 StringTokenizer 클래스

  문자열이 한 종류의 구분자로 연결되어 있을 경우, StringTokenizer 클래스를 사용하면 손 쉽게 문자열(토큰: token)을 분리해 낼 수 있습니다. StringTokenizer 객체를 생성할 때 첫 번째 파라미터로 전체 문자열을 주고, 두 번째 파라미터로 구분자를 주면 됩니다. 만약 구분자가 생략되면 구분자는 기본적으로 공백(space)가 됩니다.


1
2
StringTokenizer st = new StringTokenizer("문자열""구분자");
 
cs



  StringTokenizer 객체가 생성되면 부분 문자열을 분리해 낼 수 있는데, 다음 메소드들을 이용해서 전체 토큰 수, 남아 있는 토큰 여부를 확인한 다음, 토큰을 읽으면 됩니다.






  다음은 두 가지 방법으로 토큰을 추출하는 방법을 보여줍니다.



 * StringTokenizerExam.java


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package api;
 
 
import java.util.StringTokenizer;
 
public class StringTokenizerExam {
 
    public static void main(String[] args) {
        String text = "Jack/Jolie/Chan";
        
        // Way 1
        StringTokenizer st = new StringTokenizer(text, "/");
        int countTokens = st.countTokens();
        
        for (int i = 0; i < countTokens; i++) {
            String token = st.nextToken();
            System.out.println(token);
        }
        
        System.out.println();
        
        // Way 2
        st = new StringTokenizer(text, "/");
        
        while (st.hasMoreTokens()) {
            String token = st.nextToken();
            System.out.println(token);
        }
    }
 
}
 
 
 
cs






StringBuffer, StringBuilder Class

String 클래스는 replace 등을 이용하여 수정 할 때, 수정되는 것이 아니라, 수정된 문자열을 새롭게 만들어 가리킨다.

그러므로, 수정등을 자주 사용하게 된다면 메모리 부하가 걸리게 될 것이다.


반면, StringBuffer와 StringBuilder 는 내부 버퍼가 있어서, 문자열을 수정할 때, 버퍼안에 있는 문자열이 직접적으로 수정된다.

두 클래스의 차이는 StringBuffer는 멀티스레드에서 사용 할 수 있도록 동기화가 적용 됬지만 Builder는 단일 스레드 환경에서만 사용되게 동기화가 적용되지 않았다.


 StringBuffer, Builder의 사용법은 동일하다.

StringBuilder sb = new StringBuilder(초기크기); 생성자로 사용가능 하며, 초기크기는 자동으로 커지기 때문에 신경 안써도 되고 안넣어도 된다.

 


 append()와 insert() 메소드는 매개 변수가 다양한 타입으로 오버로딩되어 있기 때문에 대부분의 값을 문자로 추가 또는 삽입 할 수 있습니다.


 * StringBuilderExam.java


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package api;
 
 
public class StringBuilderExam {
 
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        
        sb.append("Java ");
        sb.append("Project Meeting");
        System.out.println(sb.toString());
        
        sb.insert(4"8");
        System.out.println(sb.toString());
 
        sb.setCharAt(4'9');
        System.out.println(sb.toString());
        
        sb.replace(1421"Design");
        System.out.println(sb.toString());
        
        sb.delete(45);
        System.out.println(sb.toString());
        
        int length = sb.length();
        System.out.println("총 문자수 : " + length);
    }
 
}
 
 
 
cs




출처: http://palpit.tistory.com/879 [palpit's log-b]

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함