세로형
Recent Posts
Recent Comments
Link
04-19 00:01
«   2024/04   »
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
Archives
Today
Total
관리 메뉴

꿈 많은 사람의 이야기

자바 String 클래스(StringBuilder), split 메소드 본문

java

자바 String 클래스(StringBuilder), split 메소드

이수진의 블로그 2017. 8. 18. 08:35

자바 문자열을 처리할 때 특정 구분자로 연결되어 있을 경우 구분자를 기준으로 부분 문자열을 분리하기 위해서는 String의 split() 메소드를 이용할 수 있다.

1
2
3
4
5
6
7
String text = "이&김,박-최";
String[] n = text.split("&|,|-");
for(String name : n)
{
    System.out.println(name);
}
 
Colored by Color Scripter

split 메소드 안에는 정규표현식이 들어간다.
& 또는 , 또는 - 가 들어가면 분리해서 문자열 배열에 넣는다.
즉 해당 문자열을 구분자로 구분지어 배열로 만든다.

그리고 그 배열을 출력하면 분리되어 저장되어 있는 것을 볼 수 있다.

문자열을 저장하는 String은 내부의 문자열을 수정할 수 없다. 예를 들어 replace()메소드를 사용하면 내부의 문자를 수정하는 것이 아니라 새로운 문자를 리턴한다.
또한 문자열에서 + 연산도 마찬가지이다.

String data = "ABC";
data += "DEF";


 

 




을 하면 위의 그림처럼 정의가 된다. 즉 새로운 객체를 참조하게 된다.
이러한 + 연산자를 많이 사용하면 그만큼 String 객체수가 늘어나기 때문에 프로그램 성능을 느리게 한다. 

문자열을 변경하는 작업이 많을 경우 StringBuffer 클래스 또는, StringBuilder를 쓰는게 좋다. 이 두 클래스는 내부 버퍼(buffer : 데이터를 임시로 저장하는 메모리)에 문자열을 저장해 두고 그 안에서 추가, 수정, 삭제작업을 하도록 설계되어 있다.

두 클래스는 사용법은 동일하지만 StringBuffer 클래스는 멀티 스레드 환겨엥서 사용할 수 있도록 동기화가 되어 있어 스레드에 안전하다.
하지만 StringBuilder는 단일 스레드 환경에서만 사용하도록 설계되어 있다. 스레드는 추후 정리하므로 StringBuilder만 정리하도록 하겠다.

StringBuilder 객체를 생성하면 버퍼 내에서 문자 추가, 삽입, 삭제 등의 작업을 할 수 있는데 다음 메소드를 사용하면 된다.

메소드
설명
append(〮〮〮)
문자열 끝에 주어진 매개값을 추가
insert(int offset, 〮〮〮)
문자열 중간에 주어진 매개값을 추가
delete(int start, int end)
문자열의 일부분을 삭제
deleteCharAt(int incex)
문자열에서 주어진 index의 문자를 삭제
replace(int start, int end, String str)
문자열의 일부분을 다른 문자열로 대치
stringBuilder reverse()
문자열의 순서를 뒤바꿈
setCharAt(int index, char ch)
문자열에서 주어진 index의 문자를 다른 문자로 대치
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
StringBuilder sb = new StringBuilder();
        
sb.append("java");
sb.append("prgram");
System.out.println(sb.toString());
        
sb.insert(4"2");
System.out.println(sb.toString());
        
sb.setCharAt(4'6');
System.out.println(sb.toString());
        
sb.replace(68"Book");
System.out.println(sb.toString());
        
sb.delete(45);  //4부터 5 전까지 -> 1개만 삭제!
System.out.println(sb.toString());
        
int length = sb.length();

 


와 같이 사용할 수 있다.


반응형
그리드형
Comments