La fonction de cette fonction est d'intercepter la chaîne mixte anglais-chinois spécifiée et de maintenir la longueur d'affichage à un. Il s'agit d'intercepter un caractère chinois comme deux mots anglais. Description : La fonction de cette fonction est d'intercepter la chaîne mixte anglais-chinois spécifiée et de maintenir la longueur d'affichage à un. Il s'agit d'intercepter un caractère chinois comme deux mots anglais.
Objectif : Généralement utilisé dans les listes d’affichage de titres pour éviter une insertion inégale des chaînes interceptées.
code de programme
Copiez le code comme suit :
'//Chaîne A_strString à traiter
'//A_intLen est basé sur le nombre de caractères anglais
'//A_strAddString Si A_strString a un suffixe ajouté lors de l'interception de caractères, tel que :..., il peut être vide
fonction CutString (byval A_strString, byval A_intLen, byval A_strAddString)
faible MM_objRe,MM_objMs,MM_objMh
dimMM_strCut,MM_intLen
setMM_objRe=nouvelle RegExp
MM_objRe.Global=true'recherche globale
MM_objRe.IgnoreCase=true' n'est pas sensible à la casse
MM_objRe.Pattern=[^/x00-/xff]
MM_intLen=A_intLen
si len(A_strString)<=A_intLen alors
MM_strCut=A_strString
autre
MM_strCut=gauche(A_strString,MM_intLen)
définir MM_objMs=MM_objRe.execute(MM_strCut)
si MM_objMs.count<>MM_intLen alors
pour chaque MM_objMh dans MM_objMs
si MM_objMh.FirstIndex<MM_intLen alors
MM_intLen=MM_intLen-1
autre
sortie pour
finir si
suivant
autre
MM_intLen=MM_intLen/2
finir si
MM_strCut=gauche(A_strString,MM_intLen) & A_strAddString
finir si
CutString=MM_strCut
setMM_objRe=rien
fonction de fin
Ceci est différent de ce qui est actuellement populaire sur Internet. Les expressions régulières sont utilisées pour obtenir des caractères non ANSI (les caractères non ANSI par défaut sont ici des caractères chinois. S'il y a des écarts, les expressions régulières peuvent être modifiées pour atteindre l'objectif). . Tout d'abord, veuillez noter : la longueur spécifiée de la fonction est basée sur le nombre de caractères anglais. Autrement dit, il est désigné par 10, ce qui signifie 10 caractères anglais ou 5 caractères chinois.
Deux optimisations ont été apportées :
Le premier point : Obtenez directement les caractères de la longueur spécifiée, car qu'il s'agisse de tous les caractères chinois ou de tous les caractères anglais, le plus long n'est que la longueur de tout l'anglais, et les caractères qui la dépassent sont des caractères absolument éliminés.
Deuxième point : utilisez des expressions régulières pour rechercher des caractères chinois dans la plage et ne parcourez que le nombre de mots de chaque caractère chinois, ce qui peut minimiser le nombre de boucles.