자바에서 String 클래스는 많이 사용된다. String a = "abc" 이런 식으로 단순히 문자값을 담는 변수의 역할을 하기도 하고, 문자열을 가공하거나 문자열에 대한 각종 정보를 얻기 위해 사용하기도 한다.
String 클래스의 여러 메서드 중 이 포스팅에서는 문자열을 자르는 메서드를 소개하려 한다.
패키지 : java.lang
클래스 : String - 문자의 처리에 관한 메서드가 있다.
문자열을 자르는 메서드는 다음과 같다.
substring( ) 메서드는 2가지 종류가 있다. (메서드 오버로딩)
substring(int 시작인덱스)
: 매개변수로 시작 인덱스를 지정해 준다. 그러면 시작 인덱스 다음 문자부터 문자열 끝까지를 잘라서 반환한다.
substring(int 시작인덱스, int 끝인덱스)
: 시작과 끝 인덱스를 지정한다. 그러면 지정한 곳의 문자열을 잘라서 반환한다.
주의할 점은 substring( ) 메서드는 시작 인덱스 다음 문자열부터 자른다는 것이다. 즉 시작 인덱스에 해당하는 문자는 포함되지 않는다. 시작 인덱스와 반대로 끝 인덱스의 경우 포함된다. 예를 들어 substring(2,7) 라고 하면 3번째 문자 ~ 7번째 문자까지 잘라서 반환한다.
그러면 두가지 메서드를 예제를 통해 확인해 보자.
1 2 3 4 5 6 7 8 9 10 | public class StringTest { public static void main(String args[]) { String p = "I-have-a-pen"; System.out.println("substring(int begin) : " + p.substring(5)); System.out.println("substring(int begin, int end) : " + p.substring(5, 10)); } } | cs |
먼저 I-have-a-pen 이라는 문자열을 지정한다. 그리고 두 종류의 substring( ) 메서드를 이용해서 문자열을 자른다.
1 2 3 4 | [실행결과] substring(int begin) : e-a-pen substring(int begin, int end) : e-a-p | cs |
실행 결과는 위와 같다. substring(5) 로 지정하였을 경우 6번째 문자부터 문자열 끝까지 잘려서 반환되었다. substring(5, 10) 으로 지정하였을 경우 6번째 문자부터 10번째 문자까지 잘려서 반환되었다.
그런데 substring( ) 의 시작 인덱스는 몇부터 가능한 것일까? 3가지 경우로 테스트를 해보자.
1 2 3 4 5 6 7 8 9 10 11 | public class StringTest { public static void main(String args[]) { String p = "I-have-a-pen"; System.out.println("substring(int begin) : " + p.substring(0)); System.out.println("substring(int begin) : " + p.substring(1)); System.out.println("substring(int begin) : " + p.substring(-1)); } } | cs |
시작 인덱스를 0, 1, -1로 지정하고 실행해 보았다.
1 2 3 4 5 6 7 8 | [실행결과] substring(int begin) : I-have-a-pen substring(int begin) : -have-a-pen Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at java.lang.String.substring(String.java:1927) at StringTest.main(StringTest.java:10) | cs |
0으로 지정하였을 경우 1번째 문자를 포함해서 자른다. 1로 지정하면 2번째 문자부터 자른다. -1로 지정하면 인덱스가 범위를 벗어났다는 오류가 발생한다. 즉 시작 인덱스는 0 이상이면 된다.
끝 인덱스의 경우 문자열 길이보다 긴 숫자를 지정하면 오류가 발생한다. 위의 I-have-a-pen의 길이는 총 12이다. 끝 인덱스로 13 이상을 지정하면 오류가 발생한다.
'코딩 > Java' 카테고리의 다른 글
자바 String 클래스 - contains, equals (0) | 2016.10.20 |
---|---|
자바 String 클래스 - 공백제거 (0) | 2016.10.18 |
자바 정적쿼리와 동적쿼리 - Statement, PreparedStatement (2) | 2016.10.07 |
자바와 오라클 연동하기 <2> - 소스코드 작성 (7) | 2016.09.30 |
자바와 오라클 연동하기 <1> - JDBC 드라이버 (4) | 2016.09.28 |