Post

Java[StringSplitting]

문자열 분리

Java에서 문자열 ( String ) 을 분리하는 방법에는 substring, split 이 존재합니다.

이 두개의 메서드에 대해서 알아보겠습니다.

split(String regex)

split(String regex, int limit)

이 두개의 메서드는 매개 변수로 정규표현식으로 문자열만 받거나 문자열과 limit(문자열을 나눌 최대 개수)를 받습니다.

둘다 return 값은 배열로 반환합니다

split(String regex)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
String str = "Hi! Hello world";
String[] dataList1 = str.split("");
String[] dataList2 = str.split(" ");
String[] dataList3 = str.split(" ", 1);
String[] dataList4 = str.split("H");

System.out.println(Arrays.toString(dataList1));
System.out.println(Arrays.toString(dataList2));
System.out.println(Arrays.toString(dataList3));
System.out.println(Arrays.toString(dataList4));

--> [H, i, !, H, e, l, l, o, w, o, r, l, d]
--> [Hi!, Hello, world]
--> [Hi!, Hello world]
--> [H, i!, H, ello world]

위에서 str.split(” ”, 1); 이부분이 뜻하는 바는 공백으로 문자열을 자르는데, limit갯수만 큼만 자르라는 뜻 입니다.

또한 여기서 정규표현식을 사용하여 좀 더 세밀하게 자를 수 있습니다.

1
2
3
4
5
6
        String str = "Hello123world456!";
        String[] dataList5 = str.split("\\d+"); // 숫자를 기준으로 자르기
        
        System.out.println(Arrays.toString(dataList5));
        
        --> [Hello, world, !]

위의 코드에서 \d+는 하나 이상의 숫자를 나타내는 정규 표현식 입니다.

이를 이용해서 세 부분으로 잘랐습니다.

substring(int start, int end)

1
2
3
4
5
6
7
8
9
10
String str = "Hello world";
String dataList1 = str.substring(3);
String dataList2 = str.substring(3, 7);

System.out.println(Arrays.toString(dataList1));
System.out.println(Arrays.toString(dataList2));

--> 
llo world
lo w

참고로 String에는 각 문자마다 index값이 존재합니다.

substring은 int형의 매개변수를 2개 받는데, 첫번쨰 매개변수는 컷팅할 문자열의 시작 위치입니다.

그리고 두번 쨰 매개 변수는 끝나는 지점을 알려주는 매개변수입니다.

즉, int start ~ int end까지 자르겠다는 뜻 입니다.

This post is licensed under CC BY 4.0 by the author.