Maison  >  Article  >  interface Web  >  js traite les chaînes contenant des caractères chinois

js traite les chaînes contenant des caractères chinois

一个新手
一个新手original
2017-10-12 09:36:161197parcourir

Scénario :

L'attribut length du type String en js obtient le nombre de caractères dans la chaîne, mais le front-end doit souvent limiter le chaîne Longueur d'affichage. Un caractère chinois occupe la position d'affichage de deux caractères minuscules anglais. Par conséquent, il est souvent incorrect d'utiliser la valeur de longueur pour évaluer la longueur d'affichage lorsque le chinois et l'anglais sont mélangés.

La solution conventionnelle consiste à parcourir la chaîne. Les caractères chinois comptent pour une longueur de 2, les caractères non chinois comptent pour une longueur de 1 et la longueur d'affichage de la chaîne est limitée par la somme des longueurs nouvellement calculée. Regardez le code ↓↓↓

var Tools ={    //是否包含中文
    hasZh: function(str){        
    for(var i = 0;i < str.length; i++)
        {            
        if(str.charCodeAt(i) > 255) //如果是汉字,则字符串长度加2
                return true;            
                return false;
        }
    },    //重新计算长度,中文+2,英文+1
    getlen: function(str){       
    var strlen = 0;        
    for(var i = 0;i < str.length; i++)
        {            
        if(str.charCodeAt(i) > 255) //如果是汉字,则字符串长度加2
                strlen += 2;            
                else
                strlen++;
        }        return strlen;
    },    //限制长度
    limitlen: function(str, len){        
    var result = "";        
    var strlen = 0;        
    for(var i = 0;i < str.length; i++)
        {            
        if(str.charCodeAt(i) > 255) //如果是汉字,则字符串长度加2
                strlen += 2;            
                else
                strlen++;

            result += str.substr(i,1);            
            if(strlen >= len){                
            break;
            }
        }        return result;
    }
}

Le principe de cette méthode est basé sur les différentes plages d'encodage unicode du chinois et de l'anglais. Le chinois occupe 2 octets et l'anglais occupe 1 octet, donc l'unicode chinois La valeur codée. doit être supérieur à 2 ^ 8-1 = 255.

La méthode ci-dessus peut être plus rigoureuse : considérez la plage de codage Unicode. Pour la plage spécifique, vous pouvez consulter la table Unicode

PS : La plage de codage Unicode des caractères chinois en hexadécimal est 4E00. -9FA5, décimal Alors c'est : 19968-40869, c'est-à-dire que l'expression précise pour juger le chinois est :

str.charCodeAt(i)>=19968 && str.charCodeAt(i)<=40869

Insérez un mot qui n'est pas trop rigoureux. Le code n'a pas besoin d'être trop strict. . Après tout, vous ne savez pas que l'utilisateur (test) perdra quelles choses étranges.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn