문자열을 처리하다 보면 공백을 제거해야 하는 경우가 있다. 이럴 때 사용할 수 있는 2가지 메서드를 알아보자.
trim( ) : 문자열 양 끝의 공백 제거
String 클래스에는 trim( ) 이라는 메서드가 있다. 이 메서드는 문자열의 앞뒤에 있는 공백을 모두 제거하는 기능을 한다. 앞뒤의 공백만 제거할 뿐 문자열 중간에 있는 공백은 제거되지 않는다.
API는 위와 같다.
예제로 trim( )의 기능을 확인해 보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public class StringTest { public static void main(String args[]) { String p1 = " I have a pen "; String p2 = p1.trim(); System.out.println("=="+p1+"=="); System.out.println("=="+p2+"=="); } } [실행결과] == I have a pen == ==I have a pen== | cs |
p1에 담긴 문자열은 앞, 뒤로 공백이 들어가 있다. 이것에 trim( ) 메서드를 사용할 경우 앞, 뒤 공백이 모두 제거된 것을 확인할 수 있다. 단, 문자열에 포함된 공백은 그대로 남아있다.
replaceAll( ) : 기존 문자를 지정한 문자로 대체
replaceAll( ) 라는 메서드가 있다. 이 메서드는 문자를 대체하는 기능을 하는데, 이를 이용하여 공백을 제거할 수 있다.
API는 위와 같다.
1 2 3 4 5 6 7 8 9 10 11 | public class StringTest { public static void main(String args[]) { String p1 = " I have a pen "; String p2 = p1.replaceAll(" ", ""); System.out.println("=="+p1+"=="); System.out.println("=="+p2+"=="); } } | cs |
1 2 3 4 | [실행결과] == I have a pen == ==Ihaveapen== | cs |
" "를 "" 로 대체하도록 하면 문자열 안에 있는 모든 공백이 제거되는 것을 확인할 수 있다. 그런데 이런 식으로 하였을 경우 공백이 제거되지 않는 경우도 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public class StringTest { public static void main(String args[]) { String p1 = " I have a pen \tApple"; String p2 = p1.replaceAll(" ", ""); System.out.println("=="+p1+"=="); System.out.println("=="+p2+"=="); } } [실행결과] == I have a pen Apple== ==Ihaveapen Apple== | cs |
문자열에 탭(\t) 을 포함시켜 보자. 이럴 경우 " "를 "" 로 대체한다고 해서 공백이 제거되지 않는다. 이렇게 \t 같은 이스케이프 시퀀스가 포함되었을 경우 공백을 정규식으로 표현해 주어야지 제거가 가능하다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public class StringTest { public static void main(String args[]) { String p1 = " I have a pen \tApple"; String p2 = p1.replaceAll("\\s", ""); System.out.println("=="+p1+"=="); System.out.println("=="+p2+"=="); } } [실행결과] == I have a pen Apple== ==IhaveapenApple== | cs |
공백을 정규식으로 \\s 로 표현할 경우 이스케이스 시퀀스에 의한 공백도 깔끔하게 제거된다.
'코딩 > Java' 카테고리의 다른 글
자바 추상클래스(abstract class) (0) | 2016.10.23 |
---|---|
자바 String 클래스 - contains, equals (0) | 2016.10.20 |
자바 String 클래스 - 문자열 자르기 (0) | 2016.10.17 |
자바 정적쿼리와 동적쿼리 - Statement, PreparedStatement (2) | 2016.10.07 |
자바와 오라클 연동하기 <2> - 소스코드 작성 (7) | 2016.09.30 |