프로그래밍언어/Java

자바(Java) 문자열 자르기(split, subString) 사용법

멍토 2022. 2. 9.

프로그래밍을 하다 보면 특정 문자나 패턴을 기준으로 문자열을 자르고 싶을 때가 있다. 이럴 때 Java에 있는 String 클래스에 내장된 기능을 사용하면 가능하다.

이번 포스팅에서는 String의 기능인 split과 subString에 대해서 알아보자.

Split

split 메서드는 String 배열을 반환하는 메서드이다.

특정한 문자나 패턴을 기준으로 문자를 자르고 싶을 때 사용한다.

사용 방법은 아래와 같다.

"안녕하세요,반갑습니다,수고하셨습니다,감사합니다" 라는 문자가 있고 나는 “,” 를 기준으로 문자열을 나누고 싶다고 하면 아래와 같은 형식으로 나눌 수 있다.

 

@Test
@DisplayName("문자열을 특정 기준으로 잘라 배열로 만든다.")
void splitTest1() {
    // given
    String[] expected = {"안녕하세요", "반갑습니다", "수고하셨습니다", "감사합니다"};
    String text = "안녕하세요,반갑습니다,수고하셨습니다,감사합니다";

    // when
    String[] answer = text.split(",");

    // then
    assertThat(answer).isEqualTo(expected);
}

그런데 여기서 나는 “안녕하세요" “반갑습니다" “수고하셨습니다,감사합니다" 와 같이 나누고 싶다면 어떡하죠? 하고 할 수 있다.

이럴 때를 대비해서 메서드가 오버로딩 되어있다.

파라미터로 배열의 최대 개수를 지정할 수 있는 것이다.

 

String[] answer = text.split(",", 3);

 

이때는 split에 위와 같이 배열을 3개까지만 만들어주세요 하고 지정하면 된다.

SubString

내가 원한 건 특정 문자로 자르는 것도 있지만 특정 위치로 나누고 싶어! 라고 할 수 있다.

이럴 때는 subString 메서드를 이용하면 된다.

beginIndex 하나만 있는 메서드는 해당 위치부터 끝까지를 가져온다.

 

@Test
@DisplayName("특정위치 이후의 문자열을 가져온다.")
void subString3() {
    // given
    String expected = "1234-5678";
    String value = "010-1234-5678";

    // when
    String answer = value.substring(4);

    // then
    assertThat(answer).isEqualTo(expected);
}

 

위의 코드를 보면 나는 5번째 숫자를 가져오고 싶을때(인덱스는 0부터 시작하니까 4) subString(4)를 사용하게 되면 1234-5678 이라는 값이 나오게 된다.

여기서 뒤에말고 중간이나 앞에껄 가져오고 싶어요! 라고 한다면 아래와 같이 사용하면 된다.

 

@Test
@DisplayName("특정범위의 문자열을 가져오기 위해 자른다.")
void subString1() {
    // given
    String expected = "010";
    String value = "010-1234-5678";

    // when
    String answer = value.substring(0, 3);

    // then
    assertThat(answer).isEqualTo(expected);
}

시작은 값에 포함되고 마지막 값은 포함되지 않는다. (시작 ≤ 포함 여부 < 마지막)

위의 경우는 처음부터 4번째 전의 값까지 돌려주세요 라는 코드가 된다.

중간을 가져오고 싶다면 범위를 조절해서 작성하면 된다.

 

 

공부해보기

따로 공부가 하고 싶은 사람들은 아래 깃허브에서 코드를 받아서 연습을 하면 된다.

자바공부용 깃허브 : https://github.com/daum7766/java-study

 

GitHub - daum7766/java-study: test 코드를 기반으로 자바의 기능을 학습한다.

test 코드를 기반으로 자바의 기능을 학습한다. Contribute to daum7766/java-study development by creating an account on GitHub.

github.com

 

 

참고자료

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html

 

String (Java SE 11 & JDK 11 )

Compares two strings lexicographically. The comparison is based on the Unicode value of each character in the strings. The character sequence represented by this String object is compared lexicographically to the character sequence represented by the argum

docs.oracle.com

 

댓글

💲 광고입니다.