Maison  >  Article  >  interface Web  >  le traitement js contient un partage d'exemples de chaînes chinoises

le traitement js contient un partage d'exemples de chaînes chinoises

小云云
小云云original
2018-01-25 11:35:322037parcourir

Cet article vous apporte principalement un exemple de traitement js de chaînes contenant des caractères chinois. L'éditeur le trouve plutôt bon, je vais donc le partager avec vous maintenant et le donner comme référence pour tout le monde. Suivons l'éditeur pour y jeter un œil, j'espère que cela pourra aider tout le monde.

Scénario :

L'attribut length du type String dans js obtient le nombre de caractères dans la chaîne, mais le devant fin souvent Il sera nécessaire de limiter la longueur d'affichage de la chaîne. 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 juger de 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 occupe 2 octets et l'anglais occupe. 2 octets. 1 octet, donc la valeur de codage Unicode chinois doit être supérieure à 2 ^ 8-1 = 255.

La méthode ci-dessus peut être plus rigoureuse : considérez la plage d'encodage Unicode. Pour la plage spécifique, vous pouvez consulter la Tableau Unicode

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


<.>
str.charCodeAt(i)>=19968 && str.charCodeAt(i)<=40869
Insérez une déclaration moins rigoureuse, le code n'a pas besoin d'être trop restrictif, après tout, vous ne savez pas quelles choses étranges l'utilisateur (test) va perdre.

Recommandations associées :

Méthode de mise en œuvre de remplacement de toutes les chaînes jQuery

Explication détaillée des chaînes d'épissage de la syntaxe vue

Comment implémenter la fonction de chaîne d'interception js

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