Java에서 문자열을 반전하는 방법

1. 개요

이 빠른 자습서에서는 Java 에서 문자열반전 할 수있는 방법 을 살펴 보겠습니다 .

일반 Java 솔루션을 사용하여이 처리를 시작합니다. 다음으로 Apache Commons와 같은 타사 라이브러리가 제공하는 옵션을 살펴 보겠습니다.

또한 문장에서 단어의 순서를 바꾸는 방법을 보여 줍니다 .

2. 전통적인 for 루프

우리는 자바에서 문자열이 불변이라는 것을 알고 있습니다. 불변 객체는 완전히 생성 된 후에도 내부 상태가 일정하게 유지 되는 객체입니다 .

따라서 우리는 그것을 수정 하여 문자열 을 되돌릴 수 없습니다 . 이러한 이유로 다른 문자열 을 만들어야 합니다.

먼저 for 루프 를 사용하는 기본 예제를 살펴 보겠습니다 . 마지막 요소에서 첫 번째 요소까지 String 입력 을 반복하고 모든 문자를 새 String 으로 연결합니다 .

public String reverse(String input) { if (input == null) { return input; } String output = ""; for (int i = input.length() - 1; i >= 0; i--) { output = output + input.charAt(i); } return output; }

보시다시피 코너 케이스는 조심해서 따로 취급해야합니다.

예제를 더 잘 이해하기 위해 단위 테스트를 빌드 할 수 있습니다.

@Test public void whenReverseIsCalled_ThenCorrectStringIsReturned() { String reversed = ReverseStringExamples.reverse("cat"); String reversedNull = ReverseStringExamples.reverse(null); String reversedEmpty = ReverseStringExamples.reverse(StringUtils.EMPTY); assertEquals("tac", reversed); assertEquals(null, reversedNull); assertEquals(StringUtils.EMPTY, reversedEmpty); }

3. StringBuilder

Java는 또한 변경 가능한 문자 시퀀스를 생성하는 StringBuilderStringBuffer 와 같은 일부 메커니즘을 제공합니다 . 이러한 객체에는 원하는 결과를 얻는 데 도움 이되는 reverse () 메서드가 있습니다.

여기 에서 String 입력 에서 StringBuilder 를 만든 다음 reverse () 메서드 를 호출해야합니다 .

public String reverseUsingStringBuilder(String input) { if (input == null) { return null; } StringBuilder output = new StringBuilder(input).reverse(); return output.toString(); }

4. 아파치 커먼즈

Apache Commons는 문자열 조작을 포함한 많은 유틸리티 클래스가있는 인기있는 Java 라이브러리입니다.

평소처럼 Apache Commons 사용을 시작하려면 먼저 Maven 종속성을 추가해야합니다.

 org.apache.commons commons-lang3 3.9 

인 StringUtils의 클래스가 제공하기 때문에 우리가 여기에서 필요로하는 것입니다 역 () 와 유사한 방법 모두 StringBuilder를 .

이 라이브러리를 사용하는 한 가지 장점은 유틸리티 메서드가 null- safe 작업을 수행 한다는 입니다. 따라서 엣지 케이스를 별도로 처리 할 필요가 없습니다.

목적을 충족하고 StringUtils 클래스를 사용하는 메서드를 만들어 보겠습니다 .

public String reverseUsingApacheCommons(String input) { return StringUtils.reverse(input); }

이제이 세 가지 방법을 살펴보면 세 번째 방법이 String 을 뒤집는 가장 간단하고 오류가 발생하기 쉬운 방법 이라고 확실히 말할 수 있습니다 .

5. 문장에서 단어 순서를 뒤집기

이제 공백으로 구분되고 구두점이없는 단어가있는 문장이 있다고 가정 해 보겠습니다. 이 문장에서 단어의 순서를 바꿔야합니다.

이 문제는 두 단계로 해결할 수 있습니다. 공백 구분 기호로 문장을 분할 한 다음 단어를 역순으로 연결하는 것입니다.

먼저 고전적인 접근 방식을 보여 드리겠습니다. 문제의 첫 번째 부분을 수행하기 위해 S tring.split () 메서드 를 사용할 것입니다. 다음으로 결과 배열을 역순으로 반복하고 StringBuilder를 사용하여 단어를 연결합니다 . 물론 다음 단어 사이에 공백을 추가해야합니다.

public String reverseTheOrderOfWords(String sentence) { if (sentence == null) { return null; } StringBuilder output = new StringBuilder(); String[] words = sentence.split(" "); for (int i = words.length - 1; i >= 0; i--) { output.append(words[i]); output.append(" "); } return output.toString().trim(); }

둘째, Apache Commons 라이브러리 사용을 고려할 것입니다. 다시 한 번, 더 읽기 쉽고 오류가 발생하기 쉬운 코드를 만드는 데 도움이됩니다. 입력 문장과 구분 기호를 인수로 사용 하여 StringUtils.reverseDelimited () 메서드 만 호출하면 됩니다.

public String reverseTheOrderOfWordsUsingApacheCommons(String sentence) { return StringUtils.reverseDelimited(sentence, ' '); }

6. 결론

이 튜토리얼에서 우리는 먼저 Java 에서 문자열 을 뒤집는 다양한 방법을 살펴 보았습니다 . 핵심 Java를 사용하고 Apache Commons와 같은 인기있는 타사 라이브러리를 사용하여 몇 가지 예제를 살펴 보았습니다.

다음으로, 두 단계로 문장에서 단어의 순서를 바꾸는 방법을 살펴 보았습니다. 이 단계는 문장의 다른 순열을 달성하는데도 도움이 될 수 있습니다.

평소처럼이 자습서에 표시된 모든 코드 샘플은 GitHub에서 사용할 수 있습니다.