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는 또한 변경 가능한 문자 시퀀스를 생성하는 StringBuilder 및 StringBuffer 와 같은 일부 메커니즘을 제공합니다 . 이러한 객체에는 원하는 결과를 얻는 데 도움 이되는 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에서 사용할 수 있습니다.