Lenguaje 4D – Mejoras en la comparación de cadenas

Traducido automáticamente de Deepl

El lenguaje 4D ofrece más de 20 comandos para manejar cadenas. Y con 4D v18 R6, 4D introduce un nuevo comando: Compare strings. Y otro comando ha sido mejorado: Position. Ambos comandos le permiten utilizar opciones para obtener resultados más precisos. ¡Aprendamos más!

HDI: Mejoras en la comparación de cadenas.

Posición

El conocido comando Position permite encontrar la posición de un texto dentro de otro. Sólo ofrece dos opciones: posición inicial y coincidencia exacta, basada en el código de caracteres. A partir de 4D v18 R6, ahora tiene más posibilidades de comparación, como la de «distinguir entre mayúsculas y minúsculas» o «distinguir entre acentos». ¡El idioma japonés tampoco ha sido olvidado! Hiragana/Katakana y el ancho de los caracteres también están disponibles como opciones de búsqueda. También existe la opción de buscar la «palabra completa».

Empecemos por el principio.

La primera opción es «estricta». Tiene en cuenta las mayúsculas, los acentos, etc., así como las especificidades de los idiomas. En alemán, por ejemplo, se puede suponer que la «ß» es idéntica a la «ss». En francés, «œ» y «æ» equivalen a «oe» y «ae».

Las demás opciones disponibles hablan por sí solas. «Insensible a las mayúsculas y minúsculas» y «insensible a los acentos» permiten omitir los acentos y las mayúsculas. En el caso del japonés, «kana insensitive» ignora las diferencias entre el katakana y el hiragana, y «width insensitive» ignora el ancho de los caracteres.

La última opción (muy útil) permite ignorar partes de palabras para encontrar sólo palabras completas (enteras).

Algunos ejemplos

$p:=Position ("casa"; "he hecho los deberes";0;$length;sk whole word")
// returns zero ! home is not a whole word in this case.

$p:=Position ("casa"; "he hecho los deberes";0;$length;sk case insensitive")
// returns 16; the capital "H" is considered equal to letter "h"

$p:=Position ("Joao"; "Tengo un amigo llamado João";0;$length;sk accent insensitive «)
// returns 23; the accentuated letter "ã" is considered equal to letter "a"

¡Estas opciones se pueden acumular!

$p:=Position ("joao"; "Tengo un amigo llamado João";0;$length;sk case insensitive + sk accent insensitive")
// also returns 23; the accentuated letter "ã" is considered equal to letter "a" AND letter "J" is considered equal to letter "j"

Comparar cadenas

El nuevo comando Compare strings permite comparar cadenas con las mismas opciones que las añadidas al comando Position. Este comando se basa en el idioma definido en la configuración de la base de datos. Esto puede ser muy útil para permitir ordenaciones específicas, por ejemplo.

El comando devolverá

  • cero (0) si las cadenas se consideran idénticas (según los criterios pasados como opciones)
  • un valor negativo o positivo si la primera cadena se ordena antes o después de la segunda.

Algunos ejemplos

En el siguiente ejemplo, $resultado devuelve «1» porque «a» se considera más grande que «A». No por su tamaño, sino por su código de caracteres.
Recordatorio: sk char code hace que la comparación sea independiente del idioma.

$result:=Compare strings("alpha"; "Alpha"; sk char codes)

Esta vez, $resultado devuelve «0» porque las minúsculas y las mayúsculas deben considerarse idénticas, gracias a la opción sk case insensitive.
Recordatorio: sk case insensitive hace que la comparación dependa del idioma.

$result:=Compare strings("un árbol"; "Un árbol"; sk case insensitive )

Conclusión

Eche un vistazo al IDH anterior y vea cómo se pueden utilizar estas nuevas opciones.

Si necesitas gestionar búsquedas u ordenaciones específicas en tus datos, seguramente te serán muy útiles. Puedes encontrar más información sobre estos comandos en la documentación: comparar cadenas y posición.

¡Y asegúrese de unirse a la discusión en el foro de 4D!

Roland Lannuzel
- Propietario de Producto y Experto en 4D - Después de estudiar electrónica, Roland se dedicó a la informática industrial como desarrollador y consultor, construyendo soluciones para clientes con una variedad de bases de datos y tecnologías. A finales de los años 80 se enamoró de 4D y lo ha utilizado para escribir aplicaciones de negocio que incluyen sistemas de contabilidad, facturación y correo electrónico.Eventualmente se unió a la compañía en 1997, las valiosas contribuciones de Roland incluyen el diseño de especificaciones, herramientas de prueba, demos, así como la formación y hablar con la comunidad 4D en muchas conferencias. Continúa dando forma activamente al futuro de 4D definiendo nuevas características y herramientas de desarrollo de bases de datos.