Página 1 de 1

Funcion replace[Solucionado]

Publicado: 06 Ago 2010, 12:03
por ShiveR
Hola, intento hacer en vb como una especie de "traductor" tengo dos Textbox y un boton, lo que quiero hacer es reemplazar el texto de Text1(0) al de Text1(2), pero al pasarlo que me reemplace las palabras.

La funcion seria algo asi... pero el problema es que si yo pongo...

Por ejemplo, la siguiente cadena de texto:

Código: Seleccionar todo

Hola a todos, gracias por b y tu y yo
Solo reemplaza algunas letras y otras no, ¿alguien me podria explicar porque?

Código: Seleccionar todo

Private Sub Command1_Click(Index As Integer)
Text1(2) = Replace(Text1(0), "Hola", "Adios")
Text1(2) = Replace(Text1(0), "a", "A")
Text1(2) = Replace(Text1(0), "b", "B")
Text1(2) = Replace(Text1(0), "tu", "tu!!!")
Text1(2) = Replace(Text1(0), "yo", "yOOO")
End Sub
1 Saludo y Gracias!

Re: Funcion replace

Publicado: 06 Ago 2010, 13:32
por p0is0n-123
Seria mucho mejor que en vez de usar Replace(cadena,"a","A") usaras las funcioens internas UCase y LCase

Salu2

Re: Funcion replace

Publicado: 06 Ago 2010, 14:07
por ps1c0s1s
te estaba ayudando por privado shiver pero como se siguio lo hago por aca ! te hice un codigo simple probalo , ojo que hay otra forma para hacerlo como por ejemplo con expresiones regulares ! a ver miralo

Edito pongo el codigo aca para que lo vean por si alguien le hace falta : te lo hice servido a las manos jajaj Un abrazo!

Código: Seleccionar todo

Private Sub Command1_Click()
Dim lines()  As String
Dim words()  As String
Dim findWord As String
Dim newWord  As String
Dim i        As Long
Dim j        As Long

lines = Split(Text1.Text, vbCrLf)

For i = 0 To UBound(lines)
    words = Split(lines(i), " ")
    For j = 0 To UBound(words)
        findWord = removePuntuation(words(j))
        Select Case UCase$(findWord)
            Case "HOLA": newWord = "Adios"
            Case "A":    newWord = "A"
            Case "B":    newWord = "B"
            Case "TU":   newWord = "tu!!!"
            Case "YO":   newWord = "yOOO"
            Case Else
                newWord = ""
        End Select
        If (Len(newWord)) Then words(j) = Replace$(words(j), findWord, newWord, 1, 1)
    Next
    lines(i) = Join(words, " ")
Next

Text2.Text = Join(lines, vbCrLf)
End Sub

Function removePuntuation(word As String) As String
    removePuntuation = Replace$(word, ",", "")
    removePuntuation = Replace$(removePuntuation, ".", "")
End Function

Private Sub Form_Load()
Text1.Text = "Hi everyone, thanks for b and you and me" & vbCrLf
Text1.Text = Text1.Text & "hOlA jo yo"
Text1.Text = Text1.Text & vbCrLf & "         a aa aaa a"
Text1.Text = Text1.Text & vbCrLf & "hell tu moi"
Text1.Text = Text1.Text & vbCrLf & "hola. foo hola, amigo hola! hOla."
End Sub

Re: Funcion replace

Publicado: 06 Ago 2010, 14:33
por ShiveR
muchisimas gracias, me sirvi de mucho ps1c0s1s y gracias tambien a p0is0n-123 por la colaboracion! :D

Re: Funcion replace

Publicado: 07 Ago 2010, 13:40
por p0is0n-123
Asi da gusto agradeciendo...Muchas veces hermano

Salu2