ios - Swift : textField可输入的长度为4个汉字或者8个字符。咋判断
大家讲道理
大家讲道理 2017-04-18 09:24:15
0
4
348
        if self.tf.text?.characters.count > 4 {
            Tool.alertUser("昵称最多4个汉字,或者8个字符;数字,字母占一个字符,汉字占2个字符")
            return
        }

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

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

répondre à tous(4)
刘奇
var length = 0
for char in nickNameTF.text!.characters {
    // 判断是否中文,是中文+2 ,不是+1
    length += "\(char)".lengthOfBytesUsingEncoding(NSUTF8StringEncoding) == 3 ? 2 : 1
}
if length > 8 {
    Tool.alertUser("字数限制为4个汉字或者8个字符;汉字算2个字符,字母、数字算1个字符")
    return
}
小葫芦
  • Tout d’abord, un caractère chinois n’occupe pas forcément 2 octets.

  • Deuxièmement, vous pouvez essayer de contrôler la longueur via String().utf8.count.

  • Enfin, vous pouvez également le contrôler via des expressions régulières.

迷茫

J'ai vu de nombreuses zones de saisie comptées en octets.

洪涛

Je pense que la question devrait être résolue de cette façon. Bien que les caractères chinois puissent occuper 3 caractères, nous "pensons" qu'il s'agit de deux caractères. Le but est de contrôler la longueur des surnoms chinois et anglais, pas pour le. longueur de utf8
Il faut donc juger if( a > 0x4e00 && a < 0x9fff){Alors c'est du chinois, en comptant deux caractères🎜>Mais ce n'est pas si laborieux pour le moment, limitez-le simplement à une valeur , par exemple, 10 c'est bien

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal