Swift 中檢測字符串是否包含英文字母(A-Z, a-z),可遍歷 UTF-8 視圖檢查碼位範圍。本文提供簡潔高效的實現。
func containsLetter(_ string: String) -> Bool {
for char in string.utf8 {
// 'A'=65 ~ 'Z'=90, 'a'=97 ~ 'z'=122
if (char > 64 && char < 91) || (char > 96 && char < 123) {
return true
}
}
return false
}
// 使用
let input = "測試123abc"
if containsLetter(input) {
print("包含字母")
} else {
print("純數字/符號/中文")
}
string.utf8 返回字符串的 UTF-8 編碼字節序列(UTF8View)65-90,小寫 97-122| 方法 | 優點 | 缺點 |
|---|---|---|
正則 range(of: "[A-Za-z]", options: .regularExpression) | 語義清晰、支持 Unicode 字母擴展 | 性能稍低、語法較重 |
CharacterSet.letters.contains(char) | 官方 API、正確處理 Unicode | 需逐字符轉 Character,較繁瑣 |
| UTF-8 碼位檢查 (本文) | 極快、無依賴、適合純 ASCII 字母場景 | 不識別非 ASCII 字母(如 é、α) |
func containsUnicodeLetter(_ string: String) -> Bool {
let letterSet = CharacterSet.letters
return string.unicodeScalars.contains { letterSet.contains($0) }
}
純英文場景用 UTF-8 碼位最快;國際化項目請用 CharacterSet 或正則。