La función de esta función es interceptar la cadena mixta inglés-chino especificada y mantener la longitud de visualización en uno. Se trata de interceptar un carácter chino como dos palabras en inglés. Descripción: La función de esta función es interceptar la cadena mixta inglés-chino especificada y mantener la longitud de visualización en uno. Se trata de interceptar un carácter chino como dos palabras en inglés.
Propósito: generalmente se usa en listas de visualización de títulos para evitar la inserción desigual de cadenas interceptadas.
código de programa
Copie el código de código de la siguiente manera:
'//A_strString cadena a procesar
'//A_intLen se basa en la cantidad de caracteres en inglés
'//A_strAddString Si A_strString tiene un sufijo agregado al interceptar caracteres, como:..., puede estar vacío
función CutString(byval A_strString,byval A_intLen,byval A_strAddString)
atenuado MM_objRe,MM_objMs,MM_objMh
dimMM_strCut,MM_intLen
setMM_objRe=nueva expresión regular
MM_objRe.Global=true'búsqueda global
MM_objRe.IgnoreCase=true' no distingue entre mayúsculas y minúsculas
MM_objRe.Pattern=[^/x00-/xff]
MM_intLen=A_intLen
si len(A_strString)<=A_intLen entonces
MM_strCut=A_strString
demás
MM_strCut=izquierda(A_strString,MM_intLen)
establecer MM_objMs=MM_objRe.execute(MM_strCut)
si MM_objMs.count<>MM_intLen entonces
para cada MM_objMh en MM_objMs
si MM_objMh.FirstIndex<MM_intLen entonces
MM_intLen=MM_intLen-1
demás
salida para
terminar si
próximo
demás
MM_intLen=MM_intLen/2
terminar si
MM_strCut=izquierda(A_strString,MM_intLen) & A_strAddString
terminar si
CortarCadena=MM_strCut
setMM_objRe=nada
función final
Esto es diferente de lo que es actualmente popular en Internet. Las expresiones regulares se utilizan para obtener caracteres que no son ANSI (los caracteres que no son ANSI predeterminados aquí son caracteres chinos. Si hay desviaciones, las expresiones regulares se pueden modificar para lograr el propósito). . En primer lugar, tenga en cuenta: la longitud especificada de la función se basa en la cantidad de caracteres en inglés. Es decir, se designa como 10, lo que significa 10 caracteres en inglés o 5 chinos.
Se han realizado dos optimizaciones:
El primer punto: obtenga los caracteres de la longitud especificada directamente, porque ya sean todos los caracteres chinos o todos los ingleses, el más largo es solo la longitud de todos los ingleses, y los caracteres que la exceden son caracteres absolutamente eliminados.
Segundo punto: utilice expresiones regulares para encontrar caracteres chinos dentro del rango y recorra solo la cantidad de palabras de cada carácter chino, lo que puede minimizar la cantidad de bucles.