工具小筆記|解決「冒號與底線」轉換的奇怪 Bug

更新 發佈閱讀 4 分鐘

從一個不起眼的 Bug 開始

最近在做 LINE Bot 設定功能時,收到一個奇怪的使用者回報:

同樣是輸入「設定1_台中_07:30_平日」,系統卻有時候抓不到時間。

仔細一看,問題不在邏輯,而是在 輸入文字的符號 ——

原來有些手機鍵盤輸出的「冒號」並不是半形的 :

而是全形 ,甚至還有一些更冷門的變體字元。

底線 _ 也有同樣的情況。


我們發現了什麼?

在實際測試中,我遇到了這些奇妙的符號:

符號 Unicode 名稱 最終轉換 : U+FF1A 全形冒號 Fullwidth Colon : ﹕ U+FE55 Small Colon : ꞉ U+A789 Modifier Letter Colon : ː U+02D0 Modifier Letter Triangular Colon : ∶ U+2236 Ratio : _ U+FF3F 全形底線 Fullwidth Low Line _ ﹏ U+FE4F Wavy Low Line _

這些符號看起來幾乎一模一樣,但對程式來說是完全不同的字元。

如果不處理,資料比對就會失敗。


我的解法:normalizeInput()

我寫了一個小工具函式,把常見的變體全部轉成標準半形符號:

function normalizeInput(str) {
if (!str) return "";

return str
// 台 → 臺
.replace(//g, "臺")
// 冒號變體
.replace(/[\uFF1A\uFE55\uA789\u02D0\u2236]/g, ":")
// 底線變體
.replace(/[\uFF3F\uFE4F]/g, "_")
// 去除前後空白
.trim();
}

這樣,不管使用者輸入什麼奇怪的冒號或底線,都能正確比對。


實測紀錄

IN : 設定1_台中_07:30_平日
OUT: 設定1_臺中_07:30_平日

IN : 設定1_臺中_0730_平日
OUT: 設定1_臺中_07:30_平日

IN : 設定1꞉臺中_07ː30﹏平日
OUT: 設定1:臺中_07:30_平日

🪄 給非工程師的版本

想像一下,你在餐廳點餐,跟店員說「我要牛肉麵」。

結果店員聽到的卻是「牛☆肉☆麵」,因為你用了奇怪的發音符號。 雖然你看起來講的是同一句話,但對系統(或是店員的收銀機)來說,這已經是不同的字了。

我們這次的問題就是一樣的:

  • 你以為打的是 :(半形冒號)
  • 手機其實輸出的是 (全形冒號)或其他更罕見的符號

解法就是把這些「長得像」的符號全部換成系統能認得的標準版本,

就像在點餐時,統一用店員熟悉的標準發音。


💬 你有遇過類似的符號坑嗎?

留言跟我分享你踩過的輸入法陷阱, 也許下一篇我們可以一起整理一份「輸入法黑名單」🤭


留言
avatar-img
麟製所
2會員
58內容數
軟體、旅遊分享
麟製所的其他內容
2025/11/03
本文深入比較臺鐵 LINE Bot 的免費、標準、進階會員方案,詳細列出各方案的功能、配額、適合族群及升級理由。透過「快速選擇指南」與「實際使用情境分析」,協助用戶依據通勤頻率、路線數量、時間敏感度等需求,找到最適合的方案。文末並提供購買、兌換流程、常見問題 Q&A 及短期旅遊版方案介紹。
2025/11/03
本文深入比較臺鐵 LINE Bot 的免費、標準、進階會員方案,詳細列出各方案的功能、配額、適合族群及升級理由。透過「快速選擇指南」與「實際使用情境分析」,協助用戶依據通勤頻率、路線數量、時間敏感度等需求,找到最適合的方案。文末並提供購買、兌換流程、常見問題 Q&A 及短期旅遊版方案介紹。
2025/10/31
文章介紹臺鐵 LINE Bot 的「到站提醒」功能,如何解決通勤族常遇到的坐過站問題。詳細說明功能特色、使用設定、不同會員等級的提醒次數、配額管理,以及實際應用情境,並預告未來的「進站提醒」功能。
Thumbnail
2025/10/31
文章介紹臺鐵 LINE Bot 的「到站提醒」功能,如何解決通勤族常遇到的坐過站問題。詳細說明功能特色、使用設定、不同會員等級的提醒次數、配額管理,以及實際應用情境,並預告未來的「進站提醒」功能。
Thumbnail
2025/10/31
厭倦了和伴侶或室友為了金錢爭執?嘗試過無數記帳 App 卻總不滿意?本文介紹一款由個人需求出發,完全免費、整合個人與共同記帳功能、資料自主掌控、介面簡潔易用的記帳系統。詳細解析系統特色、實際使用情境、多樣化實用功能、安全性,並對比市售 App。
Thumbnail
2025/10/31
厭倦了和伴侶或室友為了金錢爭執?嘗試過無數記帳 App 卻總不滿意?本文介紹一款由個人需求出發,完全免費、整合個人與共同記帳功能、資料自主掌控、介面簡潔易用的記帳系統。詳細解析系統特色、實際使用情境、多樣化實用功能、安全性,並對比市售 App。
Thumbnail
看更多
你可能也想看
Thumbnail
賽勒布倫尼科夫以流亡處境回望蘇聯電影導演帕拉贊諾夫的舞台作品,以十段寓言式殘篇,重新拼貼記憶、暴力與美學,並將審查、政治犯、戰爭陰影與「形式即政治」的劇場傳統推到台前。本文聚焦於《傳奇:帕拉贊諾夫的十段殘篇》的舞台美術、音樂與多重扮演策略,嘗試解析極權底下不可言說之事,將如何成為可被觀看的公共發聲。
Thumbnail
賽勒布倫尼科夫以流亡處境回望蘇聯電影導演帕拉贊諾夫的舞台作品,以十段寓言式殘篇,重新拼貼記憶、暴力與美學,並將審查、政治犯、戰爭陰影與「形式即政治」的劇場傳統推到台前。本文聚焦於《傳奇:帕拉贊諾夫的十段殘篇》的舞台美術、音樂與多重扮演策略,嘗試解析極權底下不可言說之事,將如何成為可被觀看的公共發聲。
Thumbnail
柏林劇團在 2026 北藝嚴選,再次帶來由布萊希特改編的經典劇目《三便士歌劇》(The Threepenny Opera),導演巴里・柯斯基以舞台結構與舞台調度,重新向「疏離」進行提問。本文將從觀眾慾望作為戲劇內核,藉由沉浸與疏離的辯證,解析此作如何再次照見觀眾自身的位置。
Thumbnail
柏林劇團在 2026 北藝嚴選,再次帶來由布萊希特改編的經典劇目《三便士歌劇》(The Threepenny Opera),導演巴里・柯斯基以舞台結構與舞台調度,重新向「疏離」進行提問。本文將從觀眾慾望作為戲劇內核,藉由沉浸與疏離的辯證,解析此作如何再次照見觀眾自身的位置。
Thumbnail
本文深入解析臺灣劇團「晃晃跨幅町」對易卜生經典劇作《海妲.蓋柏樂》的詮釋,從劇本歷史、聲響與舞臺設計,到演員的主體創作方法,探討此版本如何讓經典劇作在當代劇場語境下煥發新生,滿足現代觀眾的觀看慾望。
Thumbnail
本文深入解析臺灣劇團「晃晃跨幅町」對易卜生經典劇作《海妲.蓋柏樂》的詮釋,從劇本歷史、聲響與舞臺設計,到演員的主體創作方法,探討此版本如何讓經典劇作在當代劇場語境下煥發新生,滿足現代觀眾的觀看慾望。
Thumbnail
《轉轉生》為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,融合舞蹈、音樂、時尚和視覺藝術,透過身體、服裝與群舞結構,回應殖民歷史、城市經驗與祖靈記憶的交錯。本文將從服裝設計、身體語彙與「輪迴」的「誕生—死亡—重生」結構出發,分析《轉轉生》如何以當代目光,形塑去殖民視角的奈及利亞歷史。
Thumbnail
《轉轉生》為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,融合舞蹈、音樂、時尚和視覺藝術,透過身體、服裝與群舞結構,回應殖民歷史、城市經驗與祖靈記憶的交錯。本文將從服裝設計、身體語彙與「輪迴」的「誕生—死亡—重生」結構出發,分析《轉轉生》如何以當代目光,形塑去殖民視角的奈及利亞歷史。
Thumbnail
Selenium 是一個範圍廣泛的工具和函式庫的總稱專案,用於啟用和支援網頁瀏覽器的自動化。Selenium WebDriver 提供了 C#、JavaScript、Java、Python、Ruby 等多種語言的 API,可以用於編寫自動化測試軟體。 在定位元素時,WebDriver 提供對這 8
Thumbnail
Selenium 是一個範圍廣泛的工具和函式庫的總稱專案,用於啟用和支援網頁瀏覽器的自動化。Selenium WebDriver 提供了 C#、JavaScript、Java、Python、Ruby 等多種語言的 API,可以用於編寫自動化測試軟體。 在定位元素時,WebDriver 提供對這 8
Thumbnail
JavaScript 演義 #21: 百步穿楊,數字天長
Thumbnail
JavaScript 演義 #21: 百步穿楊,數字天長
Thumbnail
JavaScript 演義 #17: 曹操短歌行,字串流傳
Thumbnail
JavaScript 演義 #17: 曹操短歌行,字串流傳
Thumbnail
在 UiPath 的學習道路上,我們常會對這些各項功能、參數感到混亂,因此RPA數位優化器的系列文章將會對這些功能參數進行解說。RPAI數位優化器這次要介紹Inject JS Script功能!想要更精準地與網頁進行互動、操作網頁元件時,就千萬不能錯過這個功能,可以幫助RPA機器人更精準地操作流程!
Thumbnail
在 UiPath 的學習道路上,我們常會對這些各項功能、參數感到混亂,因此RPA數位優化器的系列文章將會對這些功能參數進行解說。RPAI數位優化器這次要介紹Inject JS Script功能!想要更精準地與網頁進行互動、操作網頁元件時,就千萬不能錯過這個功能,可以幫助RPA機器人更精準地操作流程!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News