[java] 문자열 자르기 - split(), substring(), StringTokenizer

JH·2024년 4월 9일

java

목록 보기
15/21

split()

split() 메소드는 String 클래스의 인스턴스 메소드로, 문자열을 특정 구분자를 기준으로 분할하고 그 결과를 문자열 배열로 반환합니다.

split() 메소드의 시그니처

split() 메소드는 두 가지 버전이 있습니다

public String[] split(String regex)
public String[] split(String regex, int limit)
  • regex: 분할 기준이 될 정규 표현식입니다.
  • limit: 분할할 최대 토큰 수를 지정합니다. limit가 0이면 빈 문자열도 토큰으로 간주됩니다.

split() 메소드 사용 예제

  1. public String[] split(String regex)
public class Main {
    public static void main(String[] args) {
        String str = "apple,banana,orange";
        String[] fruits = str.split(",");

        for (String fruit : fruits) {
            System.out.println(fruit);
        }
    }
}

위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다

apple
banana
orange
  1. public String[] split(String regex, int limit)
public class Main {
    public static void main(String[] args) {
        String str = "apple,banana,orange,grape,kiwi";
        String[] fruits = str.split(",", 3);

        for (String fruit : fruits) {
            System.out.println(fruit);
        }
    }
}

위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다

apple
banana
orange,grape,kiwi

위의 예제에서는 쉼표(,)를 기준으로 문자열을 분할했고, limit 인자로 3을 지정했습니다. 따라서 문자열은 쉼표를 기준으로 처음 두 번째까지만 분할되고, 나머지 문자열은 하나의 문자열로 남습니다.

split() 메소드와 정규 표현식

split() 메소드는 정규 표현식을 인자로 받기 때문에, 다양한 패턴으로 문자열을 분할할 수 있습니다. 예를 들어, 공백이나 쉼표, 또는 콜론을 기준으로 문자열을 분할하려면 다음과 같이 할 수 있습니다

public class Main {
    public static void main(String[] args) {
        String str = "apple banana:orange,grape";
        String[] fruits = str.split("\\s|,|:");

        for (String fruit : fruits) {
            System.out.println(fruit);
        }
    }
}

위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다

apple
banana
orange
grape

위의 예제에서는 공백(\s), 쉼표(,), 또는 콜론(:)을 기준으로 문자열을 분할했습니다.


substring()

Java에서 문자열의 일부분을 추출하려면 substring() 메소드를 사용합니다. substring() 메소드는 String 클래스의 인스턴스 메소드로, 문자열의 특정 부분을 추출하여 새로운 문자열을 반환합니다.

substring() 메소드의 시그니처

substring() 메소드는 두 가지 버전이 있습니다

public String substring(int beginIndex)
public String substring(int beginIndex, int endIndex)
  • beginIndex: 추출할 부분 문자열의 시작 인덱스입니다.
  • endIndex: 추출할 부분 문자열의 끝 인덱스입니다. 이 인덱스는 부분 문자열에 포함되지 않습니다.

substring() 메소드 사용 예제

public class Main {
    public static void main(String[] args) {
        String str = "Hello, World!";
        String subStr1 = str.substring(7);
        String subStr2 = str.substring(7, 12);

        System.out.println(subStr1);
        System.out.println(subStr2);
    }
}

위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다

World!
World

위의 예제에서는 첫 번째 substring() 메소드 호출에서 시작 인덱스 7을 지정하여 7번 인덱스부터 문자열 끝까지의 부분 문자열을 추출했습니다. 두 번째 substring() 메소드 호출에서는 시작 인덱스 7과 끝 인덱스 12를 지정하여 7번 인덱스부터 12번 인덱스 직전까지의 부분 문자열을 추출했습니다.

주의사항

substring() 메소드를 사용할 때는 인덱스 범위를 주의해야 합니다. 인덱스는 0부터 시작하며, 문자열의 길이보다 큰 인덱스를 지정하면 StringIndexOutOfBoundsException이 발생합니다.


StringTokenizer 클래스

Java에서 문자열을 토큰으로 분할하는 데 사용되는 클래스 중 하나는 StringTokenizer입니다. StringTokenizer 클래스는 문자열을 여러 토큰으로 분할하는 데 사용되며, 각 토큰은 문자열에서 연속된 최대 문자 시퀀스입니다.

StringTokenizer 클래스의 생성자

StringTokenizer 클래스는 세 가지 버전의 생성자를 제공합니다

public StringTokenizer(String str)
public StringTokenizer(String str, String delim)
public StringTokenizer(String str, String delim, boolean returnDelims)
  • str: 분할할 문자열입니다.
  • delim: 분할 기준이 될 구분자입니다.
  • returnDelims: 이 값이 true이면 구분자도 토큰으로 간주됩니다.

StringTokenizer 클래스 사용 예제

import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) {
        String str = "apple,banana,orange";
        StringTokenizer st = new StringTokenizer(str, ",");

        while (st.hasMoreTokens()) {
            System.out.println(st.nextToken());
        }
    }
}

위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다

apple
banana
orange

위의 예제에서는 쉼표(,)를 구분자로 사용하여 문자열을 토큰으로 분할했습니다.

StringTokenizer 클래스와 구분자 반환

StringTokenizer 클래스의 생성자에 returnDelims 인자를 true로 지정하면 구분자도 토큰으로 간주됩니다.

import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) {
        String str = "apple,banana,orange";
        StringTokenizer st = new StringTokenizer(str, ",", true);

        while (st.hasMoreTokens()) {
            System.out.println(st.nextToken());
        }
    }
}

위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다

apple
,
banana
,
orange

위의 예제에서는 쉼표(,)를 구분자로 사용하여 문자열을 토큰으로 분할했고, 구분자도 토큰으로 간주되었습니다.

profile
발전하는 백엔드 개발자

0개의 댓글