PDA

Ver la Versión Completa : ¿Cómo reconocer si los caracteres 'Ñ' y 'ñ' están en una cadena?


rrf
24-07-2023, 13:05:28
Hola a tod@s.

Tengo un pequeño problema con el reconocimiento de los caracteres 'Ñ' y 'ñ' en una cadena y lo expongo por si me puedes ayudar.

En Lazarus 2.2.6 , en una función que recibe como parámetro un String de texto (cadena), se leen todos los caracteres de esa cadena, actuando de forma diferente en función de cual es el caracter leido.

Todo funciona normalmente con los caracteres del alfabeto inglés; aunque no reconoce la comparación con los caracteres 'Ñ' o 'ñ'.

Este es el código que utilicé:



for i := 1 to length(cadena) do
begin

case upcase(cadena[i]) of

'A': valor := 1;
'B': valor := 2;

// Lo intenté en esta parte con 'Ñ' y no funcionó

'Y': valor := 10;
'Z': valor := 7;


end;

// Así tampoco funciona
if ( (cadena[i] = 'Ñ') or (cadena[i] = 'ñ') )
then
begin
// ...
end;

end;


¿Sabes como se puede saber si las letras 'ñ' o 'Ñ' aparecen en el String?.

Muchas gracias de antemano.

Saludos.

Casimiro Notevi
24-07-2023, 13:58:29
Recuerda que usa utf8, por lo que Ñ lo mismo es el caracter 195, por ejemplo.

rrf
24-07-2023, 19:50:37
Gracias Casimiro.

Me has dado la pista para encontrar la solución:

Añadiendo LazUTF8 en el uses, usando la función UTF8CompareStr , que está documentada en:

https://lazarus-ccr.sourceforge.io/docs/lazutils/lazutf8/utf8comparestr.html

He podido hacer una comparación que me permitirá diferenciar si es una 'Ñ', una 'ñ' u otro caracter. Aún no lo he hecho, aunque las pruebas me salieron bien y todo indica que funcionará.

Saludos.

Casimiro Notevi
24-07-2023, 20:18:14
^\||/^\||/^\||/