'자바 문자열 자르기'에 해당되는 글 2건

 

 

안녕하세요. 제임스 입니다. 

 

이번에는 Java 에서 String 을 다룰때 유용하게 사용할 수 있는 함수 중 한가지인 split 함수에 대해 알아 보겠습니다. 

 

■ String[] split(String regex)

 

split 함수는 입력받은 정규표현식 또는 특정 문자를 기준으로 문자열을 나누어 배열(Array) 에 저장하여 리턴합니다. 

 

String str = "010-1234-5678";
String[] mobNum = str.split("-");
String ret1 = mobNum[0];
String ret2 = mobNum[1];
String ret3 = mobNum[2];

System.out.println("ret1 = "+ret1);
System.out.println("ret2 = "+ret2);
System.out.println("ret3 = "+ret3);

위와 같은 휴대폰 번호가 있다고 가정하고 이를 split("-") 했을 경우 

"010", "1234", "5678" 로 나누어져 배열에 저장됩니다. 

 

ret1 = 010

ret2 = 1234

ret3 = 5678

 

System.out.println("휴대폰번호 => "+ret1+"-"+ret2+"-"+ret3);

위와 같이 다시 휴대폰 번호 형태로 중간에 "-" 를 추가 해서 조합하면 결과는 아래와 같이 나옵니다. 

 

휴대폰번호 => 010-1234-5678

 

 

다른 예제 하나 더 보겠습니다. 

String str2 = "서울,대전,대구,부산,인천,울산";
String[] cityArr = str2.split(",");

for (int i = 0; i < cityArr.length; i++){
    System.out.println(cityArr[i]);
}

6개 도시명을 쉼표로 구분하여 나열했는데요, 이를 split(",") 했습니다. 

그리고 cityArr 의 length 만큼 for loop 을 돌려 결과 값을 찍어 봤습니다. 

 

서울

대전

대구

부산

인천

울산

 

결과 값이 이렇게 나옵니다. 참 쉽죠? 

 

정규표현식을 이용한 split 방법도 있는데요. 이는 정규표현식에 대한 내용을 포스팅한 이후 다시 한번 정리 하겠습니다. 

 

 

■ String[] split(String regex, int limit)

 

위의 인자값 하나만 받는것과 달리 int 형의 두번째 인자 값을 받는 split 함수 입니다. 

두번째 인자 값은 배열의 크기를 결정합니다. 

예제를 보면서 설명 드리겠습니다. 

 

String str2 = "81-2-010-1234-5678";
String[] arr = str2.split("-", 2);
System.out.println("ret4 = "+arr[0]);
System.out.println("ret5 = "+arr[1]);

위와 같은 String 값이 있다고 했을때 "-" 를 인자 값으로 split 하면서 배열의 크기는 2로 한정 했습니다. 

첫번째 "-" 를 기준으로 split 하면 아래와 같은 결과 값이 나옵니다. 

 

ret4 = 81

ret5 = 2-010-1234-5678

 

arr[] 배열에 이미 ret4 와 ret5 가 들어 있으므로 더이상의 배열을 생성하지 않고 위 값이 최종 결과 값이 됩니다. 

 

 

다른 예를 하나 더 보겠습니다. 

String str2 = "81-2-010-1234-5678";
String[] arr2 = str2.split("-", 4);
System.out.println(arr2.length);
for (int i = 0; i < arr2.length; i++){
    System.out.println("ret"+i+" = "+arr2[i]);
}

동일한 String 값을 두번째 인자값으로 4를 입력 합니다. 

arr2 배열 크기를 4로 지정한겁니다. 

 

어떤 결과 값이 나올지는 예상이 되시죠? ^^

 

ret0 = 81

ret1 = 2

ret2 = 010

ret3 = 1234-5678

 

위와 같이 arr2 배열에는 4개의 값이 들어 가게 됩니다. 

 

 

이상 자바 문자열을 자르기 해봤습니다. 

 

 

 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D



블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,

 

 

안녕하세요. 제임스 입니다. 

 

Java 사용중 문자열을 원하는 위치에서 잘라야 하는 경우가 있습니다. 

이때 사용하는 하는 java 함수가 바로 substring 입니다. 

이번에는 이 substring 에 대해 자세히 알아 보겠습니다. 

 

 

■ String substring(int index)

 

substring 함수는 두가지가 있으며, 그중 첫번째로 인자값을 하나만 받는 함수 입니다. 

인자값은 int 형으로 substring 하고자 하는 문자열의 앞에서 부터 몇번째 위치인가를 지정하는 값입니다. 

입력받은 인자값을  index 로 해당 위치를 포함하여 이후의 모든 문자열을 리턴 시키는 함수 입니다. 

 

이때 이 index 값은 0 부터 시작 합니다. (첫번째 자리에 있다고 1 부터 시작한다고 생가하면 안됩니다.)

 

String str = "0123456789";

위와 같은 문자열이 있을때 0 ~ 4 까지를 제외한 56789 를 가져오고 싶을 경우 아래와 같이 호출 하면 됩니다. 

str.substring(5)

index 값이 5인 위치 이후 값을 가져 오라고 했으므로 56789 를 리턴하게 됩니다. 

 

 

String str2 = "자바코딩배우기";
System.out.println(str2.substring(4));

위와 같은 문자열을 substring(4) 를 하면 index 가 4 인 위치의 문자를 포함한 문자열을 리턴합니다. 

 

 문자열
index 값  0 1 2 3 4 5

 

위 표를 보시면 "배우기" 를 가져오기 위해서는 index 값을 4 로 입력하면 된다는 것을 알 수 있습니다. 

처음에 언급 했지만 index 는 0 부터 시작합니다 :)

 

 

String str3 = "자바코딩 배워볼까?";
System.out.println(str3.substring(5));

이번 문자열에는 띄어쓰기를 한 것이 보입니다. 물론 이 공백문자도 하나의 문자이므로 한자리를 차지 합니다. 

 

문자열   ? 
index 값 0 1 2 3 4 5 6 7 8 9

 

"배워볼까?" 라는 값을 리턴받기 위해 index 값을 5로 입력했다는 것을 알 수 있습니다. 

 

 

지금까지는 입력 인자값이 한개인 substring 함수를 알아봤습니다. 

이제 입력 인자값이 두개인 substring 에 대해 알아 보겠습니다. 

 

 

■ String substring(int beginIndex, int endIndex)

 

이번에 알아볼 substring 함수는 입력 인자값이 두개 입니다. 

 

첫번째 입력 받는 인자 값은 인자값이 한개인 substring 과 같이 가져올 문자열의 시작 부분을 지정합니다. 

두번째 입력 받는 인자 값은 가져올 문자열의 끝 부분을 지정 하는 것으로 substring(in index) 가 시작부분만 지정하고 나머지 모든 문자열을 리턴하는것과 차이가 있습니다. 

 

beginIndex 위치에서 시작하여 endIndex 전 위치까지의 값을 리턴 합니다. 

 

 

다음 문자열중 356512 값만 가져오는 것을 연습해 보겠습니다. 

String str = "0000003565120";
System.out.println(str.substring(6, 12));

 

 

문자열 0 0 0 0 0 0 3 5 6 5 1 2 0
 index 값 0 1 2 3 4 5 6 7 8 9 10 11 12

 

시작 인덱스 값을 6 으로 끝나는 인덱스 값을 12로 설정하여 원하는 356512 라는 값을 리턴 받을 수 있습니다. 

substring(6, 12) ==> index 6 위치에서 index 12 - 1 위치 (11 자리) 까지의 값을 리턴 합니다.

 

String str = "0000003565120";
System.out.println(str.substring(6, 13));
System.out.println(str.substring(6));

만약 위와 같이 substring(6, 13) 을 했다면?

그리고 substring(6) 을 했다면? 

결과 값은 어떻게 나올까요? 

 

예상 하시는 데로 3565120 이라는 동일한 리턴 값을 받게 됩니다. 

 

System.out.println(str.substring(6, 14));

만약 위와 같이 endIndex 값을 14로 주게 되면 어떻게 될까요? 

index 범위를 벗어나는 값을 입력 했으므로 아래와 같이 오류가 발생하게 됩니다. 

 

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 14

 

 

 

substring(int index) 보다는 substring(int beginIndex, int endIndex) 를 많이 사용 하게 되실겁니다. 

알아 두면 정말 유용하고, 꼭 알아 두어야 하는 java 함수 입니다. 

 

 

 

 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D



블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,