線上回文檢查器會先依明確規範進行正規化,再確認字母與數字從兩端讀取時是否完全相同;這款以瀏覽器為基礎的工具會公開判定結果背後的實際比較字串。輸入單字、片語、句子或數字,執行檢查並查看保留的序列,而不要只依賴簡單的是或否。比較前,文字會先經過 Unicode NFKC 正規化,並使用固定的英文語系轉為小寫;接著,檢查器只保留具有 Unicode Letter 或 Number 屬性的字元。完成這些預先處理後,大小寫差異、空格、標點、符號與表情符號都不會成為比較單位。帶重音的字母會予以保留,不會經音譯或移除,而 NFKC 可使相容字元產生相同的比較結果。顯示的正規化字串及其保留字元計數,均取自用於判定的同一個序列,因此讀者可以直接依循規則。此工具最多可接受一百萬個 Unicode 碼點,並完全在瀏覽器中執行正規化、篩選、計數與比較,無須帳戶,也不會上傳資料。由於挑戰規則可能不同,在將結果視為最終答案前,請將這份已公開的政策與任何嚴格或特定競賽要求進行比較。

palindrome checker online
線上回文檢查器:檢視實際比較內容

檢查器會比較哪些內容

Merriam-Webster 將回文描述為從後往前或從前往後讀取都相同的單字、片語、句子或數字。這個熟悉的定義留下了一個重要的實務問題沒有答案:比較前應忽略哪些差異?大小寫、空格與標點都可能改變結果,因此檢查器需要明確政策,不能採用未經定義的文字「清理」概念。

線上回文檢查器會同時顯示判定結果與實際測試的正規化字串,藉此釐清這項歧義。它的目的不只是回答是或否,而是讓答案背後的拼寫規則可供檢視與重現。

輸入特徵 已公開的處理方式 對比較的影響
大寫與小寫字母 使用固定的英文語系轉為小寫 字母大小寫不會造成不相符
空格與換行 從保留序列中排除 片語格式不會影響判定結果
標點、符號與表情符號 經 NFKC 處理後,位於 Unicode 字母與數字的比較範圍之外 不會用作比較單位
帶重音的字母 依所述正規化方式保留 不會移除重音,也不會透過音譯取代
相容字元 使用 Unicode NFKC 正規化處理 相容形式可能產生相同的比較字串

透過三個步驟檢查文字

  1. 輸入文字。開啟回文檢查器,貼上或輸入單字、片語、句子或數字。輸入內容在正規化與篩選後,必須至少包含一個 Unicode 字母或數字,且不得超過一百萬個 Unicode 碼點。
  2. 執行檢查並查看預覽。依顯示內容確實檢視所呈現的正規化字母與數字字串。這就是用於比較的序列。若結果較長,會顯示在有大小上限的可捲動面板中,並一併提供保留字元計數。
  3. 讀取判定結果並套用正確的任務規則。讀取是或否的結果與保留字元計數,然後確認所述正規化方式是否符合謎題、課堂練習或競賽所要求的規則。嚴格要求逐字相符的挑戰可能需要不同答案。

不需要另外執行反轉步驟。取得正規化字串後,檢查器會從兩端朝中心檢查對應位置,並在遇到第一個不相符處或到達中心時停止。

揭露隱藏變更的範例

某些結果可能只有在讀者於心中移除空格、標點或大小寫後,才會看似正確。這些有紀錄的範例可說明為什麼檢視正規化預覽很有用:

  • A man, a plan, a canal: Panama 會變成 amanaplanacanalpanama,並回傳 yes。
  • Hello 會變成 hello,並回傳 no。
  • Été 會正規化為 été,並回傳 yes,因為帶重音的字母仍會保留在比較中。

第一個結果並不表示每個可能的檢查器都會以完全相同的方式處理該片語。比較每個原始字元的嚴格檢查器,會以不同方式處理大小寫、空格、逗號與冒號。這款工具則會公開其正規化方式、顯示產生的字串,並以同一個字串作為判定依據。這項區別有助於避免將標點或大小寫造成的錯覺誤認為普遍適用的規則。

不同規則分歧之處

正規化會依明確順序進行。首先,檢查器套用 Unicode NFKC 正規化。然後,使用固定的英文語系將文字轉為小寫。接著,它會逐一檢視 Unicode 碼點,只保留符合 Unicode Letter 或 Number 屬性的字元。最後,從兩端朝中心比較對稱的碼點位置。一旦發現不相符,比較便會立即停止。

這項具 Unicode 感知能力的實作不會反轉原始 UTF-16 程式碼單元,因此比較時不會拆開補充字元。判定結果是依保留字串直接得出的布林值,不是字典判定、機率、隱藏分數或遠端模型判斷。預覽、計數與判定結果全都衍生自同一個序列。

NFKC 正規化可讓相容字元產生相同的比較結果,但它不是特定語言的音譯。檢查器不會移除重音符、不會展開每種語言特有的等價形式、不會比較發音、不會識別詞界,也不會判斷句子是否有意義。兩個寫法不同的片語可能得到相同的判定結果,卻不代表含義相同。請將輸出視為對已公開拼寫規則的檢查,而不是語意分析。

限制、錯誤與本機處理

這些邊界條件旨在避免空白或不完整的序列獲得誤導性的回文判定:

  • 空白輸入會檢查失敗,且不會產生部分判定結果。
  • 只含標點、空白字元、符號或表情符號的輸入會檢查失敗,因為沒有剩餘的字母或數字可供比較。
  • 格式錯誤的 UTF-16 會檢查失敗,而不會根據受損文字產生判定結果。
  • 超過一百萬個 Unicode 碼點的文字會檢查失敗;絕不會截斷來源內容來產生結果。
  • 有效比較至少需要保留一個 Unicode 字母或數字。

檢查程序不會變更原始輸入。正規化、篩選、計數、比較與結果值算繪都會在瀏覽器本機執行。這個流程無須帳戶、不會上傳資料,也不會為檢查而發出遠端請求。本機處理也意味著,您可以在不將提交的文字傳送至伺服器的情況下檢視顯示的比較內容。

實用檢查與不支援的主張

這款檢查器適合用於文字遊戲、課堂範例、謎題驗證、識別碼、數字序列,以及偵錯正規化規則。當快速的目視判斷可能掩蓋大小寫、標點、間距、相容字元或重音符差異時,它尤其實用。

它的範圍刻意限定得很窄。它不是 DNA 回文分析工具、密碼學工具、抄襲偵測器、語意相似度系統,也不是證明寫法不同的片語具有相同含義的工具。當規則彼此衝突時,它也無法判定謎題出題者採用的是哪一種慣例。對於計分挑戰,請先閱讀競賽說明;若其內容與這款工具公開的政策不同,請遵循競賽說明。

若要進行日常驗證,最可靠的習慣是將判定結果與正規化字串及保留字元計數一起閱讀。如果顯示的序列與您預期的規則不符,您就能立即找出差異,而不必猜測結果為何被接受或拒絕。