在開發過程中,經常要對用戶輸入的內容進行長度限制。而對于字符串信息來講,中文字符和英文字符雖然長度不同,但都占一個字符。下面我們寫一個函數來計算字符串的長度。
static func numberOfChars(_ str: String) -> Int {
var number = 0
guard str.characters.count > 0 else {return 0}
for i in 0...str.characters.count - 1 {
let c: unichar = (str as NSString).character(at: i)
if (c >= 0x4E00) {
number += 2
}else {
number += 1
}
}
return number
}
代碼中的 0x4E00 是一個十六進制數,這是字符編碼集中中文字符開始的地方,日文的編碼邊界是 0x0800。 所以我們根據這個邊界值來判斷字符應該占兩位還是一位。