[Java] 문자열 자르기 - substring
2020. 12. 12. 22:48ㆍ프로그래밍 언어/Java
Java 기본으로 제공하는 String 클래스에 편리한 기능들이 많이 들어있습니다.
그 중 하나가 문자열을 자를 때 사용하는 substring입니다.
(split, StringTokenizer, 정규표현식을 활용한 여러 가지 방법이 있는데 차차 알아보도록 하겠습니다.)
문자열은 기본적으로 문자(char) 여러 개가 배열(char[])로 합쳐진 형태입니다.
즉, ABCDEFGH는 알파벳 8개이므로 배열 8칸에 들어가있는 형태이며 index를 이용하여 액세스할 수 있습니다.
문자배열 | A | B | C | D | E | F | G | H |
Index | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Java API
substring API는 2가지 형태로 제공되고 있다.
String substring(int beginIndex)
/*
파라미터:
beginIndex - 기존 문자열에서 시작index부터 문자열 끝까지 추출하여 자른다.
*/
String substring(int beginIndex, int endIndex)
/*
파라미터:
beginIndex - 기존 문자열에서 자르기 시작하는 시작Index
endIndex - 기존 문자열에서 자르기가 끝나는 종료Index
*/
사용법
위 2개의 API를 이해하기 위한 간단한 예제입니다.
String str = "ABCDEF";
System.out.println(str.substring(3));
// index 3부터 문자열 끝까지
// 출력 : DEF
System.out.println(str.substring(3, 6));
// index 3부터 6까지
// 출력 : DEF
System.out.println(str.substring(3, str.length()));
// index 3부터 문자열 길이까지
// 출력 : DEF
눈치 채신 분들도 계시겠지만 모두 동일한 출력값으로 index 3~6 범위의 문자열을 자르는 예제입니다.
자주 사용하는 활용예제
일시는 자주 사용하는 문자열입니다.
Date형으로 변환하지 않고 년, 월, 일, 시, 분만 따로 쓰는 경우가 있습니다.
String date = "2020-12-16 10:30:43";
System.out.println("년 : " + date.substring(0, 4));
System.out.println("월 : " + date.substring(5, 7));
System.out.println("일 : " + date.substring(8, 10));
System.out.println("시 : " + date.substring(11, 13));
System.out.println("분 : " + date.substring(14, 16));
System.out.println("초 : " + date.substring(17));
System.out.println("월일 : " + date.substring(5, 10));
System.out.println("시분 : " + date.substring(11, 16));
// 출력결과
년 : 2020
월 : 12
일 : 16
시 : 10
분 : 30
초 : 43
월일 : 12-16
시분 : 10:30
substring은 index를 알고 있는 상황에서 간단하게 문자열을 자를 수 있는 API입니다.
다음 글에서 split으로 문자열을 자르는 내용을 다루도록 하겠습니다.
관련글:
2020/12/16 - [Java] - [Java] 문자열 자르기 - split
반응형
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] 문자열 자르기 - char형 구분자 (0) | 2020.12.30 |
---|---|
[Java] 문자열 자르기 - 정규표현식(split) (0) | 2020.12.28 |
[Java] 문자열 자르기 - 여러 구분자/특수기호 사용하기 (0) | 2020.12.21 |
[Java] 문자열 자르기 - StringTokenzer (0) | 2020.12.17 |
[Java] 문자열 자르기 - split (0) | 2020.12.16 |