Cambio de palabras mediante matrices
Sub CambioPalMatizDim sFraseOr As StringDim mMatrizOr() As StringDim mMasc() As String, mFem() As StringDim sFraseFem As StringDim i As Integer, ii As Integer'Frase originalsFraseOr = "el alumno estudia matemáticas"'Matriz de palabras en masculinomMasc() = Array("el","un","al","del","niño","alumno")'Matriz de palabras en femeninomFem() = Array("la","una","a la","de la","niña","alumna")'Segmento la frase original en las palabras que la componenmMatrizOr() = Split(sFraseOr)'Comparo el contenido sobre la matriz mMasc()For i = 0 To UBound(mMatrizOr())For ii = 0 To UBound(mMasc())If mMatrizOr(i) = mMasc(ii) ThenmMatrizOr(i) = mFem(ii)Exit ForEnd IfNextNext'Reconstruyo la frase ahora en femenino y la muestro mediante MsgBox()sFraseFem = Join (mMatrizOr())MsgBox (sFraseFem)End Sub
En esta propuesta es importante que las matrices mMasc() y mFem() estén ajustadas a las frases que se dan como entradas, cosa que se puede hacer de varias maneras, aunque aquí la que se propone es la más simple: incrementar el listado de los arrays (mMasc() = Array("el","un","al","del","niño","alumno")).
Una vez contamos con las matrices necesarias (incluyendo la construcción de la derivada de la frase de entrada mediante la función Split() (mMatrizOr() = Split(sFraseOr)), es la estructura de bucles For anidados la responsable de ir comparando los elementos de esa matriz derivada con los elementos de la matriz a comparar (mMas() en este caso, pero no necesariamente) mediante un condicional (If mMatrizOr(i) = mMasc(ii) Then), devolviendo, en su caso, el término equivalente en femenino, reasignado a la posición del elemento de la matriz derivada (mMatrizOr(i) = mFem(ii)).
Finalizamos el procedimiento volviendo a presentar como frase los componentes de la matriz derivada de la original, que ahora presenta las palabras masculinas sustituidas por sus equivalentes en femenino (sFraseFem = Join (mMatrizOr()))

No hay comentarios:
Publicar un comentario
Comenta esta entrada