在开发过程中,经常要对用户输入的内容进行长度限制。而对于字符串信息来讲,中文字符和英文字符虽然长度不同,但都占一个字符。下面我们写一个函数来计算字符串的长度。
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。 所以我们根据这个边界值来判断字符应该占两位还是一位。
网友评论