이때 endIndex는 startIndex + length이지만, 이것이 문자열 범위 밖이라면 문자열의 끝까지 정상적으로 잘릴 수 있도록 다음과 같이 작성합니다.
for (int startIndex = 0; startIndex < source.length(); startIndex += length) {
int endIndex = startIndex + length;
if (endIndex > source.length()) endIndex = source.length();
// 문자열을 startIndex부터 endIndex까지 잘라 tokens 리스트에 추가
}
이제 실제로 문자열을 잘라 tokens 리스트에 추가합니다.
for (int startIndex = 0; startIndex < source.length(); startIndex += length) {
int endIndex = startIndex + length;
if (endIndex > source.length()) endIndex = source.length();
tokens.add(source.substring(startIndex, endIndex));
}
이렇게 완성된 split() 메서드를 사용하여 compress() 메서드에서는 tokens 리스트를 만들고, 문자열을 구성할 StringBuilder 객체를 생성합니다.
private int compress(String source, int length) {
StringBuilder builder = new StringBuilder();
for (String token : split(source, length)) {
// 압축 문자열 구성
}
return builder.length();
}