Java/문자열

[Java]StringBuilder 마지막 문자 제거하는 방법

DevStory 2022. 8. 19.

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
반응형

댓글