Una pequeña crítica de menor importancia: string
s en el uso de .NET UTF-16, no UTF-8
Cuando se habla acerca de la longitud de una cadena, hay varias cosas diferentes que usted podría media:
- Longitud en bytes. & # x2003; Esta es la vieja forma de ver las cosas en C, por lo general.
- Longitud en puntos de código Unicode. & # x2003; Esto lo acerca más a los tiempos modernos y debería ser la forma en que se tratan las longitudes de las cuerdas, excepto que no lo es.
- Longitud en UTF-8/UTF-16 código unidades. & # x2003; Esta es la interpretación más común, que se deriva de 1. Ciertos caracteres toman más de una unidad de código en esas codificaciones, lo que complica las cosas si no lo espera.
- Recuento de "caracteres" visibles (grafemas). & # x2003; Esto es lo que las personas quieren decir cuando dicen caracteres o longitud de una cadena.
En el caso de que su confusión se deriva de la diferencia entre 4 y 3. 3. es lo que utiliza C#, 4. es lo que espera. Los scripts complejos como Tamil usan ligaduras y signos diacríticos. Las ligaduras son contracciones de dos o más caracteres adyacentes en un solo glifo; en su caso, ழை es una ligadura de ழ y ை - la última de las cuales cambia la apariencia del primero; வா es también una ligadura Diacríticos son adornos alrededor de una letra, p. el acento en à o en el punto sobre ப்.
Los dos casos que he mencionado ambos dan como resultado un único grafema (lo que percibe como un carácter único), pero ambos necesitan dos caracteres reales cada uno. Entonces terminas con tres puntos de código más en la cadena.
Una cosa a tener en cuenta: para su caso, la distinción entre 2. y 3. es irrelevante, pero en general debe tenerlo en cuenta.
Gracias! ¡Esto es lo que estoy buscando! ¡Te amo! = X – Cheng