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

 la movida sq no tengo codigo sobre los separadores :S porque os preguntaba a ver como se podia hacer xq no se me ocurre la forma de escribirlo creo q es algo con la funcion Split pro ns si es asi o no

si quereis os paso todo el codigo que tengo pro ya os digo q de esa parte no tenog nada :(

en principio solo me intereserarian 3 separadosres  que serian el espacio, la coma y el punto

seba123neo

hay muchas formas de hacer esto, expresiones regulares como siempre en esto es lo mas facil.

Código (vbnet) [Seleccionar]
Imports System.Text.RegularExpressions

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim vCadenaSucia As String = "H,,...?¡¡¡¿¿¿}Çä⌂×♂||---***+++@o()/&(@)&^@#><>?:\:';=-+_%$#'l[]a" 'Hola
        Dim vCadenaLimpia As String = Regex.Replace(vCadenaSucia, "[^0-9a-zA-Z ]+", "")
        MsgBox(vCadenaLimpia)
    End Sub
End Class
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

birdez

uuuuuuuffff
eso e smuy chungoo!!!

yo lo que busco es algo solamente para comas, espacios, y puntos y q no seas las expresiones regulares esas q nunca las e visto :S

muchas gracias de todas formas pro si sabeis algo mas sencillo.....

gracias!

seba123neo

#13
mas facil que eso no hay, tambien tratar de aprender algo nuevo no viene mal tampoco, si queres algo lo mas basico posible, recorre el string y con substring() vas sacando caracter por caracter y lo vas volcando a un string temporal, y si el caracter es una coma, punto o espacio lo ignoras.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

birdez

sq el problema es q si el profesor no nos a explicado eso y le entro algo asi seguramente pensara q lo e copiado y q no e hecho yo nada ni me lo e currado ni nada y la verdad q es parte si xq me lo as dicho tu pro el resto de las cosas me las estoy intentando currar jajajaja

intentare acer lo del substring y si es un espacio, coma o punto como lo ignoro?

gracias

birdez

mi codigo es el siguiente lo que pasa q no funciona y no se xq alguien puede echarle un vistazo y ayudarme xfa?

gracias


Codigo:



Private Sub ButtonTraducir_Click(sender As System.Object, e As System.EventArgs) Handles ButtonTraducir.Click
       If String.IsNullOrWhiteSpace(TextBoxTexto.Text) Then
           MessageBox.Show("Introduce Texto a Traducir", "Información", MessageBoxButtons.OK)
           TextBoxTexto.Focus()
       ElseIf (RadioButtonEs.Checked And ComboBoxIdioma.SelectedIndex = 1) Or (RadioButtonIn.Checked And ComboBoxIdioma.SelectedIndex = 0) Then
           MessageBox.Show("No Se pueden hacer traducciones porque ha seleccionado mismo idioma de entrada y de salida", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
       Else
           If ComboBoxIdioma.SelectedIndex = 1 Then
               TextBoxTraducción.Text = traducir(dicEsp, dicIng, TextBoxTexto.Text)
           End If
       End If
   End Sub


   Private Function traducir(diccionario1 As String(), diccionario2 As String(), frase As String) As String
       Dim palabra As String = ""
       Dim traduccion As String = ""
       Dim posicion As Integer = 0
       Dim letra As String = ""

       While posicion < frase.Length
           letra = frase(posicion)
           While frase(posicion) <> " " Or frase(posicion) <> "," Or frase(posicion) <> "."
               letra = frase(posicion)
               palabra = palabra & letra
           End While
           If palabra <> "" Then
               Dim a As Integer
               a = buscar(palabra, diccionario1)
               If a >= 0 Then
                   traduccion = traduccion & diccionario2(a)
                   traduccion = traduccion & letra
                   palabra = ""
               End If

           End If

           posicion += 1
       End While

       Return traduccion


   End Function



Private Function buscar(palabra As String, diccionario As String()) As Integer
       Dim posicion As Integer = -1

       For i As Integer = 0 To diccionario.Length - 1
           If palabra = diccionario(i) Then
               posicion = i
               Return posicion
           End If
       Next
       Return posicion
   End Function





gracias de nuevo

Roboto

#16
Cita de: birdez en 31 Mayo 2012, 09:53 AM
mi codigo es el siguiente lo que pasa q no funciona y no se xq alguien puede echarle un vistazo y ayudarme xfa?

gracias


Codigo:



Private Sub ButtonTraducir_Click(sender As System.Object, e As System.EventArgs) Handles ButtonTraducir.Click
       If String.IsNullOrWhiteSpace(TextBoxTexto.Text) Then
           MessageBox.Show("Introduce Texto a Traducir", "Información", MessageBoxButtons.OK)
           TextBoxTexto.Focus()
       ElseIf (RadioButtonEs.Checked And ComboBoxIdioma.SelectedIndex = 1) Or (RadioButtonIn.Checked And ComboBoxIdioma.SelectedIndex = 0) Then
           MessageBox.Show("No Se pueden hacer traducciones porque ha seleccionado mismo idioma de entrada y de salida", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
       Else
           If ComboBoxIdioma.SelectedIndex = 1 Then
               TextBoxTraducción.Text = traducir(dicEsp, dicIng, TextBoxTexto.Text)
           End If
       End If
   End Sub


   Private Function traducir(diccionario1 As String(), diccionario2 As String(), frase As String) As String
       Dim palabra As String = ""
       Dim traduccion As String = ""
       Dim posicion As Integer = 0
       Dim letra As String = ""

       While posicion < frase.Length
           letra = frase(posicion)
           While frase(posicion) <> " " Or frase(posicion) <> "," Or frase(posicion) <> "."
               letra = frase(posicion)
               palabra = palabra & letra
           End While
           If palabra <> "" Then
               Dim a As Integer
               a = buscar(palabra, diccionario1)
               If a >= 0 Then
                   traduccion = traduccion & diccionario2(a)
                   traduccion = traduccion & letra
                   palabra = ""
               End If

           End If

           posicion += 1
       End While

       Return traduccion


   End Function



Private Function buscar(palabra As String, diccionario As String()) As Integer
       Dim posicion As Integer = -1

       For i As Integer = 0 To diccionario.Length - 1
           If palabra = diccionario(i) Then
               posicion = i
               Return posicion
           End If
       Next
       Return posicion
   End Function





gracias de nuevo

mira,haz una cosa....

coge el texbox y metele el evento onkeypressed
para k cada vez k metes una letra o un caracter,entre.

y haces una comprobacion del string:
por ejemplo:

metes la letra a y el evento lo checkea.

onkeypressed(sender e......){


atraves del sender,compruebas la key k metio.

if (key=="." || key==" "....){
pues compruebas y la anulas
}

}


----------------------------------------------------

sorry,volvi a leer y entendi lo k kerias.
lo k tienes k hacer es meter todas las palabras en un array,te recomiendo un arraylist.

tienes k usar la funcion split para ir cortando las palabras,segun " ".;,

birdez

con el metodo Split entoences tengo que hacerlo? y si me encuentro un espacio, un punto o una coma? que tengo que hacer?

$Edu$

Lo que te dice Galo es algo que talvez tu profesor no te pide, el dice de traducirlo en tiempo real, asi como el traductor de google.

Tu profesor quiere una funcion que dado un texto, lo traduzca, asique tienes que hacer con Split si.
Ya que traduciras palabras sueltas segun dijiste, no necesitas muchas vueltas, eso si, traducira cualquier cosa a veces xD fijate que el traductor de google no solo traduce palabras sueltas, sino que dependiendo de la forma en que se escribe la frase, pero eso es ya para un traductor mas avanzado, tu solo te pidieron que traduzcas palabras sueltas, hacele caso al profesor xD

Si tienes un codigo ya y no sabes porque no funciona, tienes que empezar a debuggear, poner BreakPoints, ir traceando el programa, si no sabes hacerlo tendrias que aprender porque asi le encuentras los bugs a tus programas o en este caso el porque no funciona bien. Mientras vas debuggeando vas viendo el valor de las variables, asi sabras cuales se traducieron bien sin problemas, etc.

Pero te digo que haria yo.. yo tomaria ese texto, le haria un split solo de espacios, asi guardara de esta forma:


Erase
una
vez,
en
la
era
de
los
dragones,
una
princesa
malvada.
Esta
princesa
era
una
maldita;
por
eso
lo
de
princesa
malvada
jeje
jeje


Es decir, quedara un array asi, y si te pones a fijar quedan los puntos y las comas y punto y coma. Asi que luego de eso, recorres el array para remplazar esos simbolos por nada.

Código (vbnet) [Seleccionar]


array[i].Replace(",", "")
array[i].Replace(".", "")
array[i].Replace(";", "")
array[i].Replace(" ", "") // yo lo pondria por si algo no salio bien xD



Asi ahora te quedara:


Erase
una
vez
en
la
era
de
los
dragones
una
princesa
malvada
Esta
princesa
era
una
maldita
por
eso
lo
de
princesa
malvada
jeje
jeje


Y solamente tendras que hacer tu verificacion de si existe esa palabra en tu lista para poder traducirla.
Yo me organizaria mejor a como te estas creando las funciones, estas creando una funcion para que te devuelva la posicion de la palabra, pero puedes hacer una unica funcion que devuelva la traduccion directamente, dentro de la funcion veras si podes traducirla o no, y si no podes, entonces devolves la misma palabra.

birdez

No mi traductor traduce palabras sueltas pro en cuando pongo un separador no hace nada xq no es igual q en el array pro el que me pidio el profesor debe traducir frases x eso quiero utilizar el split para q me detecta puntos, comas y espacion para poder acer frases ( el orden de la frase no importa , x ejemplo si pongo coche rojo no tiene q ponerme red car sino car red )


el problema es que en el codigo que tengo me "peta" en un END WHILE que de ahi no pasa y no se porque la verdad

y otra cosa q n se como se hace por ejemplo yo si tengo una frase con espacion y comas si despues en la traduccion como me pone las comas y los puntos en su sitio de antes?

si me puedes poner un ejemplo mejor sq no se xq l metodo split no lo pillo y eso q no tiene q ser chungo eh :S

gracias