yzc577亚洲城娱乐Swift : textField可输入的长度为4个汉字或者8个字符。咋判断

( yzc577亚洲城娱乐 )

        if self.tf.text?.characters.count > 4 {
            Tool.alertUser"昵称最多4个汉字,或者8个字符;数字,字母占一个字符,汉字占2个字符"
            return
        }

汉字最多4个,但是有人用英文名,只有4个字母明显不够,这咋办?

var length = 0
for char in nickNameTF.text!.characters {
    // 判断是否中文,是中文+2 ,不是+1
    length += "char".lengthOfBytesUsingEncodingNSUTF8StringEncoding == 3 ? 2 : 1
}
if length > 8 {
    Tool.alertUser"字数限制为4个汉字或者8个字符;汉字算2个字符,字母、数字算1个字符"
    return
}

  • 首先,一个汉字并不是一定占用 2 个字节。

  • 其次,你可以尝试通过 String.utf8.count 控制长度。

  • 最后,你也可以通过正则表达式来控制。

我见过好多输入框都是按字节计数的。

我感觉题主的问题应该这样解决,虽然汉字可能占3个字符,但是我们”认为”是两个字符,目的是控制中英文昵称长度,而不是为了utf8长度
所以应该判断if a > 0x4e00 && a < 0x9fff{那么是中文,算两个占字符}
但是目前都不这么费力,直接统一限制一个值就好了,比如10就不错

(看完/读完)这篇文章有何感想! yzc577亚洲城娱乐的分享…

发表评论

电子邮件地址不会被公开。 必填项已用*标注