工具小筆記|解決「冒號與底線」轉換的奇怪 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會員
65內容數
軟體、旅遊分享
麟製所的其他內容
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
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
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
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
JavaScript 演義 #21: 百步穿楊,數字天長
Thumbnail
JavaScript 演義 #21: 百步穿楊,數字天長
Thumbnail
在 UiPath 的學習道路上,我們常會對這些各項功能、參數感到混亂,因此RPA數位優化器的系列文章將會對這些功能參數進行解說。RPAI數位優化器這次要介紹Inject JS Script功能!想要更精準地與網頁進行互動、操作網頁元件時,就千萬不能錯過這個功能,可以幫助RPA機器人更精準地操作流程!
Thumbnail
在 UiPath 的學習道路上,我們常會對這些各項功能、參數感到混亂,因此RPA數位優化器的系列文章將會對這些功能參數進行解說。RPAI數位優化器這次要介紹Inject JS Script功能!想要更精準地與網頁進行互動、操作網頁元件時,就千萬不能錯過這個功能,可以幫助RPA機器人更精準地操作流程!
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
JavaScript 演義 #17: 曹操短歌行,字串流傳
Thumbnail
JavaScript 演義 #17: 曹操短歌行,字串流傳
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News