StringBuilder 마지막 문자 제거하는 방법
이번 포스팅은 StringBuilder 클래스에서 제공하는 메서드를 사용하여 마지막 문자를 제거하는 방법을 소개합니다.
방법 1. deleteCharAt 메서드
다음 예제처럼 배열을 순회하여 StringBuilder 객체에 배열의 요소와 요소를 구분하는 문자를 추가하는 경우 마지막 위치에 구분자가 존재하는 문제가 발생합니다.
public static void main(String args[]) {
StringBuilder sb = new StringBuilder();
int[] numArray = {10, 20, 30};
for(int num : numArray) {
sb.append(num).append(",");
}
System.out.println(sb);
}
[실행 결과]
10,20,30,
StringBuilder 클래스에서 제공하는 deleteCharAt() 메서드는 특정 위치의 문자를 제거합니다.
매개변수로 (StringBuilder 객체의 길이 - 1)를 전달하면, 마지막 위치의 문자를 제거할 수 있습니다.
public static void main(String args[]) {
StringBuilder sb = new StringBuilder();
int[] numArray = {10, 20, 30};
for(int num : numArray) {
sb.append(num).append(",");
}
System.out.println("마지막 문자 삭제 전");
System.out.println(sb);
sb.deleteCharAt(sb.length() - 1);
if(sb.length() > 0) {
sb.deleteCharAt(sb.length() - 1);
}
System.out.println("\n마지막 문자 삭제 후");
System.out.println(sb);
}
[실행 결과]
마지막 문자 삭제 전
10,20,30,
마지막 문자 삭제 후
10,20,30
StringBuilder 객체의 길이가 0인 경우 (StringBuilder 객체의 길이 - 1)의 결과가 -1이므로 deleteCharAt() 메서드에서 StringIndexOutOfBoundsException가 발생합니다.
따라서, deleteCharAt() 메서드를 사용하여 마지막 문자를 제거하기 전에 StringBuilder 객체의 길이를 체크할 필요가 있습니다.
방법 2. delete 메서드
두 번째 방법으로 StringBuilder 클래스에서 제공하는 delete() 메서드를 사용합니다.
delete() 메서드는 특정 범위의 문자를 제거합니다.
첫 번째 매개변수로 (StringBuilder 객체의 길이 - 1)을 전달하고 두 번째 매개변수로 StringBuilder 객체의 길이를 전달합니다.
public static void main(String args[]) {
StringBuilder sb = new StringBuilder();
int[] numArray = {10, 20, 30};
for(int num : numArray) {
sb.append(num).append(",");
}
System.out.println("마지막 문자 삭제 전");
System.out.println(sb);
if(sb.length() > 0) {
sb.delete(sb.length() - 1, sb.length());
}
System.out.println("\n마지막 문자 삭제 후");
System.out.println(sb);
}
[실행 결과]
마지막 문자 삭제 전
10,20,30,
마지막 문자 삭제 후
10,20,30
방법 3. setLength 메서드
마지막 방법으로 StringBuilder 클래스에서 제공하는 setLength() 메서드를 사용합니다.
setLength() 메서드는 StringBuilder 객체에 할당된 문자 시퀀스의 길이를 설정합니다.
마지막 문자를 제거하기 위해 (StringBuilder 객체의 길이 - 1)을 setLength() 메서드에 전달합니다.
public static void main(String args[]) {
StringBuilder sb = new StringBuilder();
int[] numArray = {10, 20, 30};
for(int num : numArray) {
sb.append(num).append(",");
}
System.out.println("마지막 문자 삭제 전");
System.out.println(sb);
if(sb.length() > 0) {
sb.setLength(sb.length() - 1);
}
System.out.println("\n마지막 문자 삭제 후");
System.out.println(sb);
}
[실행 결과]
마지막 문자 삭제 전
10,20,30,
마지막 문자 삭제 후
10,20,30
'Java > 문자열' 카테고리의 다른 글
[Java]문자 타입의 List를 문자열로 변환하는 방법 (0) | 2022.08.19 |
---|---|
[Java]특정 위치의 문자 변경하는 방법 (0) | 2022.08.19 |
[Java]StringBuilder 빈 값으로 초기화하는 방법 (0) | 2022.08.19 |
[Java]StringBuilder 비교하는 방법 (0) | 2022.08.18 |
[Java]문자열 대문자인지 소문자인지 확인하는 방법 (0) | 2022.08.18 |
댓글