1. 개요
Java에서 문자열을 작성하려는 경우 일반적으로 편리한 StringBuilder 를 선택하여 작업을 수행합니다.
일부 문자열 세그먼트를 포함하는 StringBuilder 시퀀스가 있고 여기에서 마지막 문자를 제거하려고 한다고 가정 합니다. 이 빠른 사용방법(예제)에서는 이를 수행하는 세 가지 방법을 살펴보겠습니다.
2. StringBuilder 의 deleteCharAt() 메서드 사용
StringBuilder 클래스에는 deleteCharAt () 메서드가 있습니다. 원하는 위치에서 문자를 제거할 수 있습니다 .
deleteCharAt() 메서드에는 하나의 인수만 있습니다 . 삭제할 문자 인덱스입니다.
따라서 마지막 문자의 인덱스를 메서드에 전달하면 해당 문자를 제거할 수 있습니다. 단순화를 위해 단위 테스트 어설션을 사용하여 예상대로 작동하는지 확인합니다.
다음으로 작동하는지 확인하는 테스트를 만들어 보겠습니다.
StringBuilder sb = new StringBuilder("Using the sb.deleteCharAt() method!");
sb.deleteCharAt(sb.length() - 1);
assertEquals("Using the sb.deleteCharAt() method", sb.toString());
위의 테스트에서 볼 수 있듯이 마지막 문자의 인덱스( sb.length() -1 )를 deleteCharAt() 메서드에 전달하고 끝 느낌표( ! )가 제거될 것으로 예상합니다.
테스트를 실행하면 통과합니다. 따라서 deleteCharAt() 가 문제를 해결합니다.
3. StringBuilder 의 replace() 메서드 사용
StringBuilder 의 replace() 메서드를 사용하면 시퀀스의 하위 문자열에 있는 문자를 주어진 문자열로 바꿀 수 있습니다. 이 메서드는 세 가지 매개변수를 허용합니다.
- 시작 인덱스 – 시작 인덱스, 포함
- end index – 종료 인덱스, 배타적
- replacement – 교체에 사용되는 문자열
시퀀스의 마지막 문자 인덱스가 lastIdx라고 가정해 보겠습니다. 마지막 문자를 제거하려면 lastIdx 를 시작 인덱스로, lastIdx+1 을 끝 인덱스로, 빈 문자열 "" 을 replace() 의 대체 항목으로 전달할 수 있습니다 .
StringBuilder sb = new StringBuilder("Using the sb.replace() method!");
int last = sb.length() - 1;
sb.replace(last, last + 1, "");
assertEquals("Using the sb.replace() method", sb.toString());
이제 위의 테스트를 실행하면 통과합니다. 따라서 replace() 메서드를 사용하여 문제를 해결할 수 있습니다.
4. StringBuilder 의 substring() 메서드 사용
StringBuilder 의 substring() 메서드를 사용 하여 주어진 문자열의 시작 및 끝 인덱스에서 하위 시퀀스를 가져올 수 있습니다. 이 메서드에는 시작 인덱스(포함)와 종료 인덱스(제외)의 두 인수가 필요합니다.
substring() 메서드가 새로운 String 객체 를 반환 한다는 점은 언급할 가치가 있습니다. 즉, substring () 메서드는 StringBuilder 객체 를 수정하지 않습니다 .
substring() 메서드에 시작 인덱스 로 0을 전달 하고 끝 인덱스 로 마지막 문자의 인덱스를 전달하여 마지막 문자가 잘린 문자열을 얻을 수 있습니다.
StringBuilder sb = new StringBuilder("Using the sb.substring() method!");
assertEquals("Using the sb.substring() method", sb.substring(0, sb.length() - 1));
//the stringBuilder object is not changed
assertEquals("Using the sb.substring() method!", sb.toString());
테스트를 실행하면 통과합니다.
테스트에서 볼 수 있듯이 substring() 이 반환한 문자열 에 마지막 문자( ! )가 없더라도 원래 StringBuilder 는 변경되지 않습니다.
5. 결론
이 간단한 기사에서는 StringBuilder 시퀀스 에서 마지막 문자를 제거하는 방법을 배웠습니다 .
늘 그렇듯이 여기에 제시된 모든 코드 스니펫은 GitHub에서 사용할 수 있습니다.