domingo, 10 de agosto de 2025

Textos. OOo Basic

Cambio de género de palabras


Casi a modo de ejercicio te propongo en esta entrada un script que nos permite modificar el género de una palabra, pasando del masculino al femenino cuando se cumple la regla m(o) -> f(a). Se trata de una aplicación práctica de las funciones de [segmentación de cadenas] que he aplicado como opción de automatización de la composición de textos [en otro proyecto], y que me ha parecido útil explicar específicamente en esta entrada.


Es importante insistir en que es una solución interesante de automatización, pero limitada, tanto como lo es como solución la aplicación de normas gramaticales debido a su complejidad y a las excepciones que presentan.

Sub CambioGenPal

Dim Pal As String, Seg As String, PalAlter
Dim letra As String
Dim nL As Integer

Pal = "alumno"
Letra = Right(Pal,1)
nL = Len(Pal)
Seg = Left(Pal,(nL-1))

MsgBox (Pal & " - " & Letra & Chr(13) & "Número de letras de la palabra " & nL & Chr(13) & "Resto de la palabra " & Seg)

If Letra = "o" Then
PalAlter = seg & "a"
MsgBox "Palabra en masculino: " & Pal & Chr(13) &_
       "Palabra en femenino: " & PalAlter
ElseIf Letra = "a" Then
PalAlter = seg & "o"
MsgBox "Palabra en femenino: " & Pal & Chr(13) &_
       "Palabra en masculino: " & PalAlter
End If

End Sub

El objetivo que se persigue con este script es devolver la palabra en el género opuesto al de la palabra dada. El requisito es que este par de palabras se rijan por la oposición de género m(o) -> f(a).

Para realizar esta transformación hacemos uso de las funciones de segmentación de las cadenas de caracteres [vistas en esta entrada], concretamente de la función Right() y de la función Left() (1), la primera para obtener el carácter final y la segunda para obtener el resto de los caracteres que contiene la palabras (2).

Una vez aplicadas estas funciones, atendiendo a cual sea el genero de la palabra original y condicionando la respuesta a este dato (If Letra = "o" Then), se reconstruye la palabra mediante concatenación (vg. PalAlter = seg & "a"), ofreciendo la alternativa de género a la original.

NOTAS

(1) También hacemos uso de la función Len() que nos permite conocer el número de caracteres de una cadena.
(2) La primera acción nos permite comprobar que se cumple el criterio de base, aunque aquí no se considera otra alternativa, además de dar información sobre de qué carácter se trata. La segunda requiere conocer previamente en número de caracteres de la palabra (función Len(), ver 1) y servirá para recomponer y modificar la palabra a devolver por el script.

No hay comentarios:

Publicar un comentario

Comenta esta entrada