특정 길이만큼 문자열 자르기
Java에서 특정 길이만큼 문자열을 잘라야 하는 경우가 존재할 수 있습니다.
예를 들어, 문자열 "ABCDEFGHIJK"를 고정 길이 3으로 설정하여 자르는 경우 4개의 요소로 분할됩니다.
ABC, DEF, GHI, JK
이번 포스팅은 Java에서 특정 길이만큼 문자열을 자르는 몇 가지 방법을 소개합니다.
방법 1. String 클래스의 substring 메서드
String 클래스의 substring 메서드와 Math 클래스에서 제공하는 몇 가지 기능을 사용하여 특정 길이만큼 문자열을 자를 수 있습니다.
먼저, 분할된 요소를 배열에 할당해야 하므로 문자열 배열을 선언해야 합니다.
문자열 배열의 크기는 (문자열의 길이 / 특정 길이)를 올림 한 값으로 설정합니다.
예를 들어, 문자열의 길이가 11이고 특정 길이가 3인 경우 배열의 크기는 4입니다.
이제, 문자열을 순회하여 특정 길이만큼 분할된 문자열을 배열에 할당합니다.
public static void main(String args[]) {
String strValue = "ABCDEFGHIJK";
int fixLength = 3;
// 배열의 크기를 구합니다.
int strArraySize = (int) Math.ceil((double)strValue.length() / fixLength);
// 배열을 선언합니다.
String[] subStringArray = new String[strArraySize];
// 문자열을 순회하여 특정 길이만큼 분할된 문자열을 배열에 할당합니다.
int index = 0;
for(int startIndex = 0; startIndex < strValue.length(); startIndex += fixLength) {
subStringArray[index++] =
strValue.substring(startIndex, Math.min(startIndex + fixLength, strValue.length()));
}
System.out.println(Arrays.toString(subStringArray));
}
[실행 결과]
[ABC, DEF, GHI, JK]
방법 2. String 클래스의 split 메서드
String 클래스의 split() 메서드를 사용한다면, 첫 번째 방법에서 작성한 코드를 간결하게 작성할 수 있습니다.
String 클래스에서 제공하는 split() 메서드의 첫 번째 매개변수로 문자열 또는 문자열로 구성된 정규표현식을 전달할 수 있습니다.
문자열을 특정 길이만큼 분할하기 위해 다음 정규식 패턴을 split() 메서드에 전달합니다.
"(?<=\\G.{" + 특정 길이 + "})"
다음 예제는 문자열 "ABCDEFGHIJK"를 고정 길이 3으로 분할합니다.
public static void main(String args[]) {
String strValue = "ABCDEFGHIJK";
int fixLength = 3;
String[] subStringArray = strValue.split("(?<=\\G.{" + fixLength + "})");
System.out.println(Arrays.toString(subStringArray));
}
[실행 결과]
[ABC, DEF, GHI, JK]
방법 3. 정규표현식(Regex)
마지막 방법으로 정규표현식에서 제공하는 Pattern 클래스와 Matcher 클래스를 직접 호출합니다.
이 방법은 substring() 메서드를 사용하는 첫 번째 방법의 소스 코드를 응용합니다.
public static void main(String args[]) {
String strValue = "ABCDEFGHIJK";
int fixLength = 3;
// 배열을 생성합니다.
int strArraySize = (int) Math.ceil((double)strValue.length() / fixLength);
String[] subStringArray = new String[strArraySize];
// 정규식 패턴을 전달합니다.
Matcher matcher = Pattern.compile(".{1," + fixLength + "}").matcher(strValue);
int index = 0;
while (matcher.find()) {
subStringArray[index++] = strValue.substring(matcher.start(), matcher.end());
}
System.out.println(Arrays.toString(subStringArray));
}
[실행 결과]
[ABC, DEF, GHI, JK]
'Java > 문자열' 카테고리의 다른 글
[Java]StringBuilder 비교하는 방법 (0) | 2022.08.18 |
---|---|
[Java]문자열 대문자인지 소문자인지 확인하는 방법 (0) | 2022.08.18 |
[Java]문자열 뒤집는 방법 (0) | 2022.08.18 |
[Java]InputStream을 문자열로 변환하는 방법 (0) | 2022.08.18 |
[Java]바이트 배열을 문자열로 변환(Byte Array to String) (0) | 2022.08.18 |
댓글