Ayuda! Separadores en un textbox

Iniciado por birdez, 30 Mayo 2012, 17:39 PM

0 Miembros y 1 Visitante están viendo este tema.

birdez

se lo q es un array

me refiero si ese array es q tengo q crear uno nuevo o q se refeiere a mis arrays que ta tengo creados!

$Edu$

Se supone que tenes un texto por ejemplo:

"Hola me llamo Eduardo, mal por mi."

Y tu programa primero remplazara los simbolos por nada, es decir los quitara, pero con remplazar por nada es mas rapido.
texto.Replace(",", "")
texto.Replace(".", "")
texto.Replace(";", "")

Entonces por ahora el codigo te va quedando asi:

"Hola me llamo Eduardo mal por mi"

Asi que ahora le haces un split por espacios.

array() = split(texto, " ")

y en este caso te queda un array de 7 elementos.

"Hola"
"me"
"llamo"
"Eduardo"
"mal"
"por"
"mi"

Ahi tienes tu array, ahora lo que te toca es a vs ver como creas la funcion para traducir, es solo pensar un poco

birdez

#42
no se por que no me quita ni las comas ni los puntos ni eso

joder esto es una ***** fijo q es una gilipolles pro stoy tan harto que no veo nadaaa!!!



e probado todo esto





Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        'separadores(TextBox1.Text)
        Dim texto As String
        texto = TextBox1.Text
        Dim i As Integer = 0


        ' For i = 0 To texto.Length
        texto.Replace(",", "")
        texto.Replace(".", "")
        texto.Replace(";", "")
        'MessageBox.Show(texto(i))


        'Next
        'For i = 0 To array.GetUpperBound(0)
        Dim array() = Split(texto, " ")
        'Next

        'For i = 0 To array.GetUpperBound(0)
        '    MessageBox.Show(array(i))
        'Next
        TextBox2.Text = texto
    End Sub


$Edu$

Esque mira, asi se usa el Replace(), yo en su vez me confundi con esto tambien.

Código (csharp) [Seleccionar]

private void button3_Click(object sender, EventArgs e)
        {
            string texto;
            string[] listado;

            texto = textBox1.Text;
            texto = texto.Replace(";", "");
            texto = texto.Replace(",", "");
            texto = texto.Replace(".", "");
            texto = texto.Replace("-", "");
            texto = texto.Replace("_", "");
            texto = texto.Replace("^", "");
            texto = texto.Replace("*", "");
            texto = texto.Replace("?", "");
            texto = texto.Replace("¿", "");
            texto = texto.Replace("!", "");
            texto = texto.Replace("¡", "");
            texto = texto.Replace("+", "");
            texto = texto.Replace("/", "");
            texto = texto.Replace("&", "");
            texto = texto.Replace("%", "");
            texto = texto.Replace("$", "");
            texto = texto.Replace("·", "");
            texto = texto.Replace("\"", ""); // remplaza las comillas dobles por nada (las quita)
            texto = texto.Replace("%", "");
            texto = texto.Replace("'", "");

            string[] delimitador = {" "};

            listado = texto.Split(delimitador, StringSplitOptions.RemoveEmptyEntries);

            foreach (string palabra in listado)
            {
              MessageBox.Show(palabra);

            }
        }



Lo hice en C#, vs pasalo a vb.net.

Viste que cuando usas el metodo Replace, devuelve una cadena pero no modifica directo, por eso tenes que asignarle esa cadena que devuelve a nuestro texto. Y veras que remplaza TODOS los simbolos, es decir, no tienes que hacer un bucle para que recorra todos los caracteres, eso lo hace solo.

Despues.. lo del split().. te confundiste tambien, y esta muy mal lo que hiciste, fijate que dentro del bucle creas la variable del array, asi que esta todo mal.

Split() te devuelve un array[] entonces vos lo que tenes que hacer declarar el array y asignarle el valor que devuelve split, asi como hice yo. Luego le agregue una opcion para que borre las entradas vacias, cosa que en este caso no pasaria pero por las dudas lo pongo. Creo que en vb.net es mas facil el uso de Split aun, ya que no tenes que crear un string[] delimitador antes como hice yo, ya que la funcion Split me pide ese string[] aunque solo sea 1, pero tengo que crear el array con un solo elemento y listo.

Despues simplemente hice un bucle para recorrer el array, vos lo que haras es usarlo en tu funcion para traducir palabra por palabra.

A ver si arreglas eso, mirando mi codigo + lo que te explique y nos dejas el codigo mas o menos terminado aunquesea xD

birdez

ok el codigo que tengo ahora es el siguiente y ya me elimina los separadores y me separa las palabras




Public Class Form2
    Dim dicIng As String() = {"Car", "Door", "House", "Train", "Dog"}
    Dim dicEsp As String() = {"Coche", "Puerta", "Casa", "Tren", "Perro"}
    Dim texto As String


    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        separadores(TextBox1.Text)
        TextBox2.Text = texto
    End Sub

    Public Function separadores(frase As String) As String

        Dim listado() As String
        Dim separador As String = " "


        texto = TextBox1.Text
        texto = texto.Replace(";", "")
        texto = texto.Replace(",", "")
        texto = texto.Replace(".", "")
        texto = texto.Replace("?", "")
        texto = texto.Replace("¿", "")
        texto = texto.Replace("!", "")
        texto = texto.Replace("¡", "")


        listado = Split(texto, separador)
        Return texto
    End Function
End Class





Ahora mi duda es como vuelvo a poner los separadores otra vez en su sitio hay alguna forma?

es decir si yo traducto,

Coche, rojo

me aparezca

Car, red              NO  --->  Car red


gracias x la explicacion Edu

$Edu$

Pero hiciste cualquier cosa, fijate que haces un split pero se pierde ese array listado, asi que para que haces el split? y nunca usas la variable que se paso por parametro xD

Organizate mejor con las funciones que crearas, es lo primero que tendrias que haber hecho, luego solo te queda hacer el codigo como sea para que esa funcion devuelva o haga lo que necesitas. Pero la implementacion de las funciones es lo primero pienso yo.

Por ejemplo, tienes que ver que hara tu proyecto.. sera un traducidor.. habra un textbox1 y un textbox2, del 1 pasa la traduccion al 2.
Ahora que ya sabemos que lo que tenemos que hacer es guardar todas las palabras del texto en un array, ya sabemos el nombre de una funcion y que devolvera que en este caso puede ser:

Public Function Listado(ByVal texto As String) As String()

Esa funcion devolvera un array de string, con todas las palabras, dentro manejara el texto a traducir que le pasemos (nuestro textbox1), pero como ves se le paso el valor y no la referencia, es decir, no estaremos modificando el texto original (el textbox1).

Luego que tenemos las palabras que se hace? verificar en otro array ya establecido si existe su traduccion y sino existe que muestre lo mismo asi que podes hacer una funcion que ya se llame Traducir.

Public Function Traducir(ByVal palabras As String()) As Boolean

Haces una funcion booleana para que devuelva False si hay un error, pero lo importante es todo lo que hara dentro.

Asi que ahora ya esta, solo queda hacer el codigo para que llame a esas funciones:


Código (vbnet) [Seleccionar]

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
     
       Dim lista() As String  ' creamos el array donde guardaremos las palabras
       lista = Listado(TextBox1.Text) ' asignamos el array que devuelve la funcion Listado a nuestro array lista()

       If not Traducir(lista) then MessageBox.Show("Ha ocurrido un error!") ' Si esa funcion no da True, entonces hubo un error, como habiamos dicho
   End Sub



Y la funcion Listado es asi:

Código (vbnet) [Seleccionar]

Public Function Listado(ByVal texto As String) As String()
       Dim list() As String
       Dim separador As String = " "

           texto = texto.Replace(";", "")
           texto = texto.Replace(",", "")
           texto = texto.Replace(".", "")
           texto = texto.Replace("-", "")
           texto = texto.Replace("_", "")
           texto = texto.Replace("^", "")
           texto = texto.Replace("*", "")
           texto = texto.Replace("?", "")
           texto = texto.Replace("¿", "")
           texto = texto.Replace("!", "")
           texto = texto.Replace("¡", "")
           texto = texto.Replace("+", "")
           texto = texto.Replace("/", "")
           texto = texto.Replace("&", "")
           texto = texto.Replace("%", "")
           texto = texto.Replace("$", "")
           texto = texto.Replace("·", "")
           texto = texto.Replace("\"", "") 'remplaza las comillas dobles por nada (las quita)
           texto = texto.Replace("%", "")
           texto = texto.Replace("'", "")

       list = Split(texto, separador)
       
       Return list

End Function



Ahora lo de traducir, no estoy seguro si es lo que quieres, pero mejor lo haces vos asi no te dejo todo hecho, por lo menos espero que ahora pongas el codigo de la forma que te digo y por lo menos estes bien organizado y muestres tu codigo con avance de la funcion Traducir que te queda para que la hagas vos.

Edit: Como veras, el textbox1.text seguira siendo el mismo, asi que seguramente lo usaras en la funcion, que talvez cambian los parametros de esa funcion para que le pases el textbox1 que tiene las comas y los demas simbolos. Tal vez te toca buscar y remplazar las palabras por la traducion.

birdez

 $Edu$ muchisimas gracias x la ayuda

mñn cuando acabe el codigo t lo paso q estoy creando la funcion de traducir como me dijiste asi q en cuanto la tenga t la subo a ver q te parece

y repito muchas gracias x la ayuda y x las explicaciones

un saludo

$Edu$

De nada, espero que no traigas las funciones que te deje todas cambiadas con errores xD Saludos

$Edu$


MaLkAvIaN_NeT

a por las buenas ideas