Function AnidadoConSangrado(anidado As String) As String Dim As String salida = "", linea = "" Dim As Integer i = 1, ind = 0 While i <= Len(anidado) If Mid(anidado, i, 1) = Chr(10) Or Mid(anidado, i, 1) = Chr(13) Then If linea <> "" Then ind = 0 While ind < Len(linea) And Mid(linea, ind + 1, 1) = "." ind += 1 Wend salida &= Str(ind \ 4) & " " & Mid(linea, ind + 1) & Chr(10) linea = "" End If Else linea &= Mid(anidado, i, 1) End If i += 1 Wend If linea <> "" Then ind = 0 While ind < Len(linea) And Mid(linea, ind + 1, 1) = "." ind += 1 Wend salida &= Str(ind \ 4) & " " & Mid(linea, ind + 1) & Chr(10) End If Return salida End Function Function SangradoAAnidado(sangrado As String) As String Dim As String salida = "", linea = "" Dim As Integer i = 1 Dim As Integer ind, nivel While i <= Len(sangrado) If Mid(sangrado, i, 1) = Chr(10) Or Mid(sangrado, i, 1) = Chr(13) Then If linea <> "" Then ind = Instr(linea, " ") nivel = Val(Mid(linea, 1, ind - 1)) salida &= String(nivel * 4, ".") & Mid(linea, ind + 1) & Chr(10) linea = "" End If Else linea &= Mid(sangrado, i, 1) End If i += 1 Wend If linea <> "" Then ind = Instr(linea, " ") nivel = Val(Mid(linea, 1, ind - 1)) salida &= String(nivel * 4, ".") & Mid(linea, ind + 1) & Chr(10) End If Return salida End Function Dim As String AnidadoInicial = "Rosetta Code" & Chr(10) & "....rocks" & Chr(10) & "........code" & Chr(10) & "........comparison" & Chr(10) & "........wiki" & Chr(10) & "....mocks" & Chr(10) & "........trolling" & Chr(10) Print AnidadoInicial Dim As String sangrado = AnidadoConSangrado(AnidadoInicial) Print sangrado Dim As String anidado = SangradoAAnidado(sangrado) Print anidado Print "Initial = Restored: "; Iif(AnidadoInicial = anidado, "True", "False") Sleep