2.1 KiB
2.1 KiB
La función ReemplazarSaltosLinea
hace lo siguiente:
- Recorre el texto carácter por carácter
- Cuando encuentra un salto de línea (código ASCII 10 o 13), verifica:
- Si el siguiente carácter NO es un espacio
- Y si el último carácter agregado NO es un espacio
- Solo en ese caso, reemplaza el salto de línea por un espacio
Public Function ReemplazarSaltosLinea(texto As String) As String
' Declaración de variables
Dim resultado As String
Dim i As Long
Dim longitudTexto As Long
Dim caracterActual As String
Dim caracterSiguiente As String
' Inicializar variables
resultado = ""
longitudTexto = Len(texto)
' Recorrer el texto caracter por caracter
For i = 1 To longitudTexto
caracterActual = Mid(texto, i, 1)
' Si no es el último caracter, obtener el siguiente
If i < longitudTexto Then
caracterSiguiente = Mid(texto, i + 1, 1)
Else
caracterSiguiente = ""
End If
' Verificar si el caracter actual es un salto de línea
If Asc(caracterActual) = 10 Or Asc(caracterActual) = 13 Then
' Si el siguiente caracter no es un espacio y el último caracter agregado no es un espacio
If caracterSiguiente <> " " And Right(resultado, 1) <> " " Then
resultado = resultado & " "
End If
Else
resultado = resultado & caracterActual
End If
Next i
ReemplazarSaltosLinea = resultado
End Function
' Función de prueba
Sub ProbarReemplazarSaltosLinea()
' Casos de prueba
Dim texto1 As String
texto1 = "Hola" & vbCrLf & "mundo"
Debug.Print "Prueba 1: " & ReemplazarSaltosLinea(texto1) ' Debería imprimir: "Hola mundo"
Dim texto2 As String
texto2 = "Hola " & vbCrLf & "mundo"
Debug.Print "Prueba 2: " & ReemplazarSaltosLinea(texto2) ' Debería imprimir: "Hola mundo"
Dim texto3 As String
texto3 = "Hola" & vbCrLf & vbCrLf & "mundo"
Debug.Print "Prueba 3: " & ReemplazarSaltosLinea(texto3) ' Debería imprimir: "Hola mundo"
End Sub