A função desta função é interceptar a string mista inglês-chinês especificada e manter o comprimento de exibição em um. Isso significa interceptar um caractere chinês como duas palavras em inglês. Descrição: A função desta função é interceptar a string mista inglês-chinês especificada e manter o comprimento de exibição em um. Isso significa interceptar um caractere chinês como duas palavras em inglês.
Objetivo: Geralmente usado em listas de exibição de títulos para evitar inserção irregular de strings interceptadas.
código do programa
Copie o código do código da seguinte forma:
'//Uma string_strString a ser processada
'//A_intLen é baseado no número de caracteres ingleses
'//A_strAddString Se A_strString tiver um sufixo adicionado ao interceptar caracteres, como:..., ele pode estar vazio
função CutString(byval A_strString,byval A_intLen,byval A_strAddString)
dim MM_objRe,MM_objMs,MM_objMh
dimMM_strCut,MM_intLen
setMM_objRe=novo RegExp
MM_objRe.Global=true'pesquisa global
MM_objRe.IgnoreCase=true' não diferencia maiúsculas de minúsculas
MM_objRe.Pattern=[^/x00-/xff]
MM_intLen=A_intLen
se len(A_strString)<=A_intLen então
MM_strCut=A_strString
outro
MM_strCut=esquerda(A_strString,MM_intLen)
definir MM_objMs=MM_objRe.execute(MM_strCut)
se MM_objMs.count<>MM_intLen então
para cada MM_objMh em MM_objMs
se MM_objMh.FirstIndex<MM_intLen então
MM_intLen=MM_intLen-1
outro
saída para
terminar se
próximo
outro
MM_intLen=MM_intLen/2
terminar se
MM_strCut=esquerda(A_strString,MM_intLen) & A_strAddString
terminar se
CortarString=MM_strCut
setMM_objRe=nada
função final
Isso é diferente do que é atualmente popular na Internet. Expressões regulares são usadas para obter caracteres não-ANSI (os caracteres não-ANSI padrão aqui são caracteres chineses. Se houver desvios, as expressões regulares podem ser modificadas para atingir o objetivo) . Em primeiro lugar, observe: o comprimento especificado da função é baseado no número de caracteres ingleses. Ou seja, é designado como 10, o que significa 10 caracteres ingleses ou 5 caracteres chineses.
Duas otimizações foram feitas:
O primeiro ponto: obtenha os caracteres do comprimento especificado diretamente, porque sejam todos caracteres chineses ou todos em inglês, o mais longo é apenas o comprimento de todos os ingleses, e os caracteres que o excedem são caracteres absolutamente eliminados.
Segundo ponto: Use expressões regulares para encontrar caracteres chineses dentro do intervalo e percorra apenas o número de palavras de cada caractere chinês, o que pode minimizar o número de loops.