Red de conocimiento informático - Material del sitio web - Cómo contar el número de caracteres chinos usando VB

Cómo contar el número de caracteres chinos usando VB

Para contar con precisión el número de palabras, puede convertir las cadenas en códigos ASCII una por una y juzgar si son caracteres chinos o ingleses según sus valores. Los valores entre 0-127 incluyen letras y números mayúsculas y minúsculas, signos de puntuación de ancho medio, retornos de carro, avances de línea, etc. Los valores ASCII de los caracteres chinos no se encuentran entre 0-127. De esta manera, es muy fácil contar el número de palabras en caracteres chinos puros, pero las estadísticas en inglés son complicadas, porque las estadísticas en inglés deben basarse en palabras y no es sencillo juzgar si se trata de un palabra. Podemos manejarlo así: si el carácter detectado es una letra mayúscula o minúscula, determine si el carácter que le sigue es un signo de una palabra (como espacios, signos de puntuación, retornos de carro, etc.), si es así, entonces se considera una palabra.

El siguiente código puede contar con mayor precisión la cantidad de caracteres chinos e ingleses y caracteres numéricos en el control TextBox, y también contar la cantidad total de bytes (incluidos varios caracteres de control, como retornos de carro, etc.) . Adecuado para entornos de edición en chino e inglés.

Comentarios: declaración a nivel de formulario

Dim c As Long, e_word As Long Comentarios: número de caracteres chinos e ingleses

Dim Num As Long, s As Comentarios largos: Números y número total de caracteres

Comentarios: Estadísticas -

Subcomando privado1_Click()

Dim Str As String Comentarios: Total de caracteres

Dim k Como comentario largo: Contador

Dim tmpStr Como comentario de cadena: Caracteres detectados uno por uno

c = 0: e_word = 0: Num = 0: s = 0 Comentario: Borrar Variable

Str = Text1.Text & " " Nota: Añade un espacio para facilitar el cálculo del último carácter en caso de accidente

For k = 1 To Len( Str) - 1

tmpStr = Mid$(Str, k, 1)

Si Asc(tmpStr) >= 65 y Asc(tmpStr) <= 90 Entonces Nota: letras minúsculas

Si Asc(Mid$(Str, k + 1, 1)) <= 64 Entonces e_word = e_word + 1

Si Asc(Mid$(Str, k + 1, 1)) > 90 And Asc( Mid$(Str, k + 1, 1)) < 97 Entonces e_word = e_word + 1

Si Asc(Mid$(Str, k + 1, 1)) > 122 Entonces e_word = e_word + 1

Si Asc(Mid$(Str, k + 1, 1)) = 39 O Asc(Mid$(Str, k + 1, 1)) = 45 Entonces e_word = e_word - 1 Comentario: Sí Comentarios de símbolo: or-time

ElseIf Asc(tmpStr) >= 97 And Asc(tmpStr) <= 122 Then Comentarios: letras mayúsculas

If Asc(Mid$(Str, k + 1, 1)) < 65 Entonces e_word = e_word + 1

Si Asc(Mid$(Str, k + 1, 1)) > 90 Y Asc(Mid $(Str, k + 1, 1)) < 97 Entonces e_word = e_word + 1

Si Asc(Mid$(Str, k + 1, 1)) > 122 Entonces e_word = e_word + 1

Si Asc (Mid$(Str, k + 1, 1)) = 39 O Asc(Mid$(Str, k + 1, 1)) = 45 Entonces e_word = e_word - 1 Comentario: Es un comentario de símbolo: or-time

ElseIf Asc(tmpStr) >= 48 And Asc(tmpStr) <= 57 Then Nota: números arábigos

Si Asc(Mid$(Str, k + 1, 1)) < 48 O Asc(Mid$(Str, k + 1, 1)) > 57 Entonces Num = Num + 1

ElseIf Asc(tmpStr) > 127 O Asc(tmpStr ) < 0 Entonces Nota: caracteres chinos

c = c + 1

Fin si

Siguiente

s = LenB(StrConv(Text1.Text, vbFromUnicode)) Comentario: Todos los caracteres

MsgBox "***Este artículo contiene:" & vbCrLf & vbCrLf & "Número de caracteres chinos: " & c & _

" (incluida la puntuación de ancho completo)" & vbCrLf & "Palabras en inglés: " & e_word & " (excluida la puntuación de ancho medio)" & vbCrLf & _

"Número: " & Num & " " & vbCrLf & "Todos los bytes: " & s & " " , vbInformation, "Recuento de palabras"

End Sub