ToolActToolAct

문자열 반전 도구

텍스트 문자열을 빠르게 반전, 다양한 반전 모드 지원

입력 내용
문자 수: 0
줄 수: 0
변환 결과
문자 수: 0
줄 수: 0

반전 방식 선택

문자열 반전이란?

문자열 반전은 텍스트의 문자 순서를 뒤집는 작업입니다. 예를 들어 'Hello'를 반전하면 'olleH'가 됩니다. 문자열 반전에는 전체 반전, 단어 반전, 각 줄 반전 등 다양한 모드가 있으며, 다양한 텍스트 처리 상황에 적용할 수 있습니다. 주요 용도로는 데이터 처리, 텍스트 변환, 암호학 기초 연산, 문자열 알고리즘 연습 등이 있습니다. 유니코드 결합 문자, 이모지, 한글 자모처럼 화면에 보이는 글자와 내부 코드 단위가 다른 경우에는 반전 결과가 예상과 다를 수 있어 처리 기준을 확인해야 합니다.

사용 방법

기본 조작

  1. 왼쪽 입력란에 반전할 텍스트를 입력하거나 붙여넣으세요
  2. 반전 모드를 선택하세요 (전체 반전, 단어 반전 등)
  3. 오른쪽에 반전된 결과가 자동으로 표시됩니다
  4. '복사'를 눌러 결과를 복사하거나, '교환'을 눌러 입력으로 사용해 추가 작업을 진행하세요

텍스트 처리

  • 일반 텍스트 반전은 간단하지만, 이모지, 결합 문자, RTL 문자는 예기치 못한 시각적 결과를 만들 수 있습니다.
  • 코드, URL, 구조화된 데이터는 전체를 무작정 반전하지 말고 원하는 부분만 반전하세요.

활용 사례

다양한 구조 수준에서 텍스트 반전전체 문자 반전, 단어 순서 반전, 각 단어 반전, 각 줄 반전, 줄 순서 반전, 문장 순서 반전 중에서 선택하세요. 출력은 입력이 변경될 때 즉시 업데이트되며 결과를 다시 입력 패널로 교환할 수 있습니다. 적절한 수준을 선택하면 결과가 의미 있게 유지됩니다. 단어를 반전하면 목록 순서가 바뀌지만, 각 단어를 반전하면 각 항목은 그대로 유지되고 글자만 뒤집힙니다.
텍스트 변환 및 엣지 케이스 테스트문자 수준 모드는 스프레드 구문을 사용하여 단순 바이트 반전보다 많은 Unicode 문자를 더 잘 처리합니다. 줄과 단어 모드는 선택한 변환에 따라 공백의 다른 부분을 보존하므로 빠른 데이터 실험에 유용합니다. 빈 줄, 이중 공백, 후행 탭 등 까다로운 입력을 붙여넣으면 각 모드가 보이지 않는 구분자를 어떻게 처리하는지 확인할 수 있습니다.
재미있거나 진단용 텍스트 변형 준비이름, 목록, 문장, 로그 줄을 반전하여 퍼즐, 테스트 데이터, 레이아웃 검사, 수동 비교에 활용하세요. 양쪽 패널의 줄 수와 문자 수가 변환이 구조를 바꿨는지 순서만 바꿨는지 확인하는 데 도움이 됩니다. 순수 반전의 경우 입력과 출력의 두 카운트가 일치해야 하므로, 빠른 숫자 검사가 신뢰할 수 있는 스모크 테스트가 됩니다.
이모지 시퀀스를 포함한 회문 확인구문을 붙여넣고 문자 수준 반전으로 전환하여 앞뒤로 읽을 때 같은지 확인하세요. 스프레드 기반 접근 방식은 다중 코드포인트 이모지와 결합 악센트를 단일 단위로 유지하므로, 반전된 무지개 깃발 문자열도 깃발을 올바르게 그룹화합니다. 진정한 회문은 전체 반전 한 번 후 원래 형태로 돌아가야 하며, 대칭으로 보이지만 그렇지 않은 입력을 빠르게 확인할 수 있습니다.
그래프 인식 이모지 및 RTL 양방향 텍스트 반전'👨‍👩‍👧' (남성, ZWJ, 여성, ZWJ, 소녀로 구성된 가족 이모지)과 같은 입력에 대해 단순 바이트 반전은 시퀀스를 깨진 글리프로 분리합니다. 이 도구는 그래프 클러스터 단위로 반복하므로 반전된 가족 이모지가 '👧‍👩‍👨' 대신 그대로 유지됩니다. 아랍어나 히브리어 입력의 경우 시각적 오른쪽에서 왼쪽 순서가 렌더러에 의해 보존되므로, 데이터 수준의 문자 반전은 화면에서 여전히 반전되어 보입니다. 버그로 판단하기 전에 해당 언어 렌더링으로 결과를 테스트하세요.

기술 원리

문자 수준 반전은 스프레드 구문을 사용합니다: [...str].reverse().join(''). 스프레드 연산자는 문자열을 유니코드 코드포인트 시퀀스로 순회하므로, UTF-16 코드 유닛 두 개를 차지하는 기본 다국어 평면 외 문자(서rogate 쌍)를 올바르게 처리합니다. 단순한 대안인 str.split('').reverse().join('')은 코드 유닛 단위로 분할하므로 파티 피뇽 🎉(U+1F389), 로켓 🚀(U+1F680), U+FFFF 이상의 모든 문자가 손상됩니다. 그래프 클러스터는 또 다른 차원을 더합니다. 결합 악센트가 있는 문자(a + ◌́), 두 개의 지역 지시자로 구성된 국기 이모지, ZWJ로 결합된 가족 이모지 👨‍👩‍👧 등 사용자가 인식하는 단일 문자는 여러 코드포인트로 이루어집니다. 코드포인트 수준의 반전은 이 조각들을 재배열하므로 가족 이모지는 세 개의 개별 인체로 분리되고 악센트는 기준 문자에서 이탈합니다. granularity: 'grapheme' 옵션의 Intl.Segmenter는 그래프 클러스터를 순회하면서 반전 중에도 이러한 시퀀스를 intact하게 유지하는 표준 준수 방식입니다. 연산 수준에서 비용은 세그먼트 수에 비례하는 O(n)이며, n은 선택한 분할 방식에 따라 코드포인트 또는 그래프 클러스터 기준의 문자열 길이입니다. 두 번 반전하면 원래 문자열이 되므로 회문 검사에 유용합니다. 유니코드가 많은 입력의 경우, 반전 전에 NFC 정규화(str.normalize('NFC'))를 적용하면 기존의 사전 구성 형태로 결합 시퀀스를 결합하여 출력의 예상치 못한 결과를 줄입니다. 아랍어나 히브리어 같은 오른쪽에서 왼쪽 문자는 논리적 순서로 저장되지만 오른쪽에서 왼쪽으로 렌더링되므로, 반전된 아랍어 문자열은 데이터 순서가 뒤집혔더라도 여전히 반전되어 보입니다.

  • 코드포인트 반전: [...str].reverse().join('')은 코드포인트 단위로 순회하며 U+FFFF 이상의 서rogate 쌍(대부분의 이모지)을 보존
  • 단순 바이트 함정: str.split('').reverse().join('')은 UTF-16 코드 유닛으로 분할하여 U+FFFF 이상의 문자를 손상
  • 그래프 클러스터: Intl.Segmenter({ granularity: 'grapheme' })로 결합 표시, 국기 시퀀스, ZWJ 이모지 👨‍👩‍👧 를 intact하게 유지
  • 단어 수준 반전: split(/\s+/), reverse, join(' '); 각 단어 내부는 보존하고 순서만 뒤집음
  • 복잡도: O(n), n은 세그먼트 수; 두 번 반전하면 원래 문자열 반환
  • NFC 정규화: str.normalize('NFC')로 반전 전에 결합 시퀀스를 기존의 사전 구성 형태로 결합
  • 양방향 텍스트: 아랍어와 히브리어는 논리적 순서로 저장; 렌더링 방향은 브라우저의 BiDi 레이어가 담당하며 데이터 반전과 별개

예시

전체 문자 뒤집기 (기본)

모드: 전체 뒤집기
입력:  hello world
출력: dlrow olleh

입력:  12345
출력: 54321

입력:  A man a plan a canal Panama
출력: amanaP lanac a nalp a nam A

단어 순서 뒤집기 vs 각 단어 뒤집기

입력: The quick brown fox

모드: 단어 순서 뒤집기 (단어 순서만)
-> fox brown quick The

모드: 각 단어 뒤집기 (단어 내부 글자)
-> ehT kciuq nworb xof

회문 검사

입력:  racecar
전체 뒤집기 -> racecar    (동일, 회문임)

입력:  level
전체 뒤집기 -> level       (회문)

입력:  hello
전체 뒤집기 -> olleh       (회문 아님)

유니코드 및 이모지 안전 처리

입력:  cafe (e에 결합 양음 부호)
단순 뒤집기: efac   (악센트가 글자에서 분리됨)
자소(grapheme) 인식: efac   (악센트가 글자에 그대로 붙어 있음)

입력:  family-emoji-ZWJ-sequence
단순 뒤집기: 별개의 이모지 3개로 분해됨
이 도구: 클러스터를 그대로 유지

로그 파일의 줄 순서 뒤집기

모드: 줄 순서 뒤집기
입력:
  2026-06-10 09:00  startup
  2026-06-10 09:05  login ok
  2026-06-10 09:10  query slow

출력 (최신순):
  2026-06-10 09:10  query slow
  2026-06-10 09:05  login ok
  2026-06-10 09:00  startup

자주 묻는 질문

문자열 뒤집기는 어떤 동작을 하나요?

입력 문자열의 글자 순서를 뒤집어 반환합니다. 예: 'hello' → 'olleh'. ROT-13 같은 간단한 장난용 암호, 회문 검사, 거울에 비친 듯한 표시용 텍스트, 튜토리얼에서 배열 조작을 시연할 때 등에 유용합니다.

이모지나 한자/한글도 올바르게 뒤집히나요?

대부분의 CJK 문자와 기본 이모지는 정상적으로 처리됩니다. 페이지가 스프레드 연산자([...text])를 사용해 UTF-16 서로게이트 페어를 처리하기 때문입니다. 다만 가족 이모지, 국기 이모지, 피부색 결합 같은 복합 이모지는 여러 코드 포인트로 구성돼 있어 뒤집을 때 분리되어 깨질 수 있습니다.

결합 발음 부호는 어떻게 처리되나요?

기본 글자에 결합 부호가 붙어 만들어진 글자(e + acute → é)는 하나의 자소로 묶여 뒤집힙니다. 분리 형식으로 입력된 경우에는 사전 정규화가 필요할 수 있어, 페이지가 입력값을 NFC로 정규화하기도 합니다. 자연어 표시 결과는 어느 쪽이든 올바르게 보입니다.

뒤집기는 좌우 반전(거울상)과 어떻게 다른가요?

뒤집기는 글자 순서를 바꾸는 것입니다('AB' → 'BA'). 거울상은 시각적 반전으로 'AB'를 ⟨ƎA⟩처럼 보여 주는 것이며, CSS transform이나 특수 문자가 필요합니다. 이 페이지는 픽셀이 아니라 글자 순서를 뒤집습니다. 거울 글자 효과를 원한다면 CSS scaleX(-1)을 사용하세요.

줄바꿈은 그대로 유지되나요?

기본값은 줄바꿈을 포함한 입력 전체를 뒤집으므로 마지막 줄이 맨 앞으로 옵니다. '각 줄을 개별적으로 뒤집기' 옵션을 켜면 줄 순서는 유지하면서 줄 안의 글자만 뒤집을 수 있어, 여러 줄 텍스트의 시각적 효과에 유용합니다.

뒤집은 글자는 항상 읽을 수 있나요?

왼쪽에서 오른쪽으로 읽는 언어(영어, 중국어, 일본어)는 뒤집으면 거의 읽을 수 없게 됩니다. 오른쪽에서 왼쪽으로 읽는 언어(아랍어, 히브리어)는 어색하게나마 읽힐 수 있지만 양방향 알고리즘이 뒤집기와 충돌해 깨집니다. 결국 뒤집기는 코드 연습이나 퍼즐 용도이지 실제 텍스트 변환 수단은 아닙니다.

입력한 텍스트가 업로드되나요?

아니요. 뒤집기는 브라우저에서만 실행되며, 붙여넣은 텍스트는 외부로 전송되지 않습니다.