Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: birdez en 30 Mayo 2012, 17:39 pm



Título: Ayuda! Separadores en un textbox
Publicado por: birdez en 30 Mayo 2012, 17:39 pm
Hola buenas tardes a todos

Necesito saber como puedo detectar los espacios, comas, puntos, puntos apartes, ..... en un textbox ya que estoy realizando un traductor y solo consigo que me detecte palabras sueltas y las traduzca a otro textbox :S ,  en cuanto le pongo un separador no hace nada y era x si alguien me podría ayudar en este aspecto

muchas gracias a todos un saludo!


Título: Re: Ayuda! Separadores en un textbox
Publicado por: kub0x en 30 Mayo 2012, 18:01 pm
Para detectar caracteres tipo coma, punto, espacio, punto y coma.. lo haría con expresiones regulares. Pero como no las domino, lo hago inicializando una Matriz que contendrá los Separadores. Una Matriz no es más que la colección de datos de un mismo tipo, separados u ordenados por índices.

Aquí te dejo el código, me funciona de madre ^^

Código
  1.    Private Sub Listar_Separadores(Byval Texto As String)
  2.        Dim Separadores() As Char = ";,. -_\/<>" 'Inicializamos la Matriz añadiendole varios Separadores, Puedes AÑADIR más
  3.        Dim Palabra As String = "ehnrules;" ' Deberias poner la variable Texto (yo aqui puse un ejemplo simplemente para probar que funcionaba)
  4.        For i As Int32 = 0 To Separadores.Length - 1
  5.            For j As Int32 = 0 To Palabra.Length - 1
  6.                If Separadores(i) = Palabra.Substring(j, 1) Then
  7.                    MsgBox("Se encontró un separador: " & Separadores(i))
  8.                End If
  9.            Next
  10.        Next
  11.    End Sub

Saludos.


Título: Re: Ayuda! Separadores en un textbox
Publicado por: birdez en 30 Mayo 2012, 18:16 pm
gracias por el codigo pro yo lo que necesito es que vaya leyendo la palabra y al encontrar un separador detecte q es uno de esos y lo interprete cn forme es un espacio, por ejemplo, y siga leyendo la sieguiente palabra para traducirla

sabes lo q quiero decirte? sq alomejor no me explico bn y es x mi culpa q no entiendas bn lo q quiero decir xD


Título: Re: Ayuda! Separadores en un textbox
Publicado por: kub0x en 30 Mayo 2012, 18:31 pm
El código que te adjunte básicamente lista todos los Separadores encontrados en una palabra. Tu lo que quieres es identificar separadores para luego borrarlos y traducir la palabra sin los separadores. Bueno, piensa un poquito en como hacerlo y como adaptar el código :P

Saludos.


Título: Re: Ayuda! Separadores en un textbox
Publicado por: birdez en 30 Mayo 2012, 18:35 pm
si algo asi yo lo q quiero es que me identifique solamente las palabras y no los separadores lo q pasa q no se me ocurre ninguna forma de hacerlo xq mi duda es como ago para eliminar ese separador y q luego al pasar la traduccion de la frase al segundo textbox me vuelva a poner los separadores que elimine anteriormente y me los coleque cada uno en su sitio xD


Título: Re: Ayuda! Separadores en un textbox
Publicado por: 79137913 en 30 Mayo 2012, 19:22 pm
HOLA!!!

Este codigo que hice el año pasado te sirve para lo que queres hacer...

Es para vb6 pero creo que es 100% compatible con VBNET

Se llama "MultiSplit"

Cita de: 79137913
HOLA!!!

Hoy queria hacer un split que devuelva un array con varios delimitadores y aparte tenga la opcion de guardar el delimitador... en fin... hice esta funcion, espero que les sirva.

Antes que el codigo Ejemplo:

Código
  1. Private Sub Ejemplo()
  2. Dim dels(3) As String
  3. Dim result() As String
  4. Const ss As String = "hola+como--andas(((esto====es+una--prueba"
  5.    dels(0) = "+"
  6.    dels(1) = "--"
  7.    dels(2) = "((("
  8.    dels(3) = "===="
  9.  
  10.    'sin preservar delimitadores
  11.    result = MultiSplit7913(ss, dels, False)
  12.    'result = ("hola";"como";"andas";"esto";"es";"una";"prueba")
  13.  
  14.    'preservando delimitadores
  15.    result = MultiSplit7913(ss, dels, True)
  16.    'result = ("hola";"+como";"--andas";"(((esto";"====es";"+una";"--prueba")
  17. End Sub

El Codigo

Código
  1. Private Function MultiSplit7913(expression As String, Delimiter() As String, PreserveDel As Boolean) As String()
  2. Dim DelCount    As Long
  3. Dim lExp        As Long
  4. Dim X           As Long
  5. Dim Pos         As Long
  6. Dim DelPos()    As Long
  7. Dim AuxArr()    As String
  8. Dim LastPos     As Long
  9. Dim LastLen     As Long
  10. Dim LastInstr   As Long
  11.  
  12.    expression = expression & Delimiter(0)
  13.    lExp = Len(expression)
  14.    DelCount = UBound(Delimiter)
  15.    ReDim DelPos(lExp)
  16.  
  17.    For X = 0 To DelCount
  18.        Pos = 1
  19.        LastInstr = InStr(Pos, expression, Delimiter(X))
  20.        Do While LastInstr <> 0
  21.            DelPos(LastInstr) = X + 1
  22.            Pos = LastInstr + Len(Delimiter(X)) + Pos
  23.            LastInstr = InStr(Pos, expression, Delimiter(X))
  24.        Loop
  25.    Next
  26.  
  27.    ReDim AuxArr(0)
  28.  
  29.    LastPos = 1
  30.  
  31.    For X = 0 To lExp
  32.        If DelPos(X) <> 0 Then
  33.            ReDim Preserve AuxArr(UBound(AuxArr) + 1)
  34.            If PreserveDel Then
  35.                AuxArr(UBound(AuxArr) - 1) = Mid$(expression, LastPos, X - LastPos)
  36.            Else
  37.                AuxArr(UBound(AuxArr) - 1) = Mid$(expression, LastPos + LastLen, X - LastPos - LastLen)
  38.                LastLen = Len(Delimiter(DelPos(X) - 1))
  39.            End If
  40.            LastPos = X
  41.        End If
  42.    Next
  43.  
  44.    ReDim Preserve AuxArr(UBound(AuxArr) - 1)
  45.  
  46.    MultiSplit7913 = AuxArr
  47.  
  48. End Function

GRACIAS POR LEER!!!

GRACIAS POR LEER!!!


Título: Re: Ayuda! Separadores en un textbox
Publicado por: birdez en 30 Mayo 2012, 19:38 pm
:S

no entiendo la mayoria de las cosas que aparecen ahi jajajajaja

muchas gracias por paasarmelo pro no entiendo mucho la verdad mirare a ver si consigo comprender algo pro ya te digo q la mayoria de cosas no me suenan jajajaja

si quereis os paso el codigo que tengo asi mas o menos os podeis imaginar como tengo montado el "traductor" este jajajajaja

gracias a todos de nuevo x la ayuda


Título: Re: Ayuda! Separadores en un textbox
Publicado por: kub0x en 30 Mayo 2012, 20:02 pm
Postea una parte del código, así vemos como interpretas cada cosa, como la plasmas y si hay algun error de código.

@79137913: Tu código extrae los Separadores y los borra, no? Si le echas un vistazo al code que adjunté comprobaras que lista cada separador. Sólo faltaría añadirle que borrara el separador extraído, cosa que no ocupa más que una linea xD

P.D=No es recomendable emplear sintaxis de VB6 en .NET

Saludos.


Título: Re: Ayuda! Separadores en un textbox
Publicado por: 79137913 en 30 Mayo 2012, 20:06 pm
HOLA!!!

@Kub0x: No, mi codigo no extrae los Separadores y los borra...

Mi codigo lo que hace es tomar un string cualquiera y seararlo por los separadores colocados en el array "Delimiter()" y vuelca todos los items resultantes en un nuevo array (resultado de la funcion).

Si sabes lo que hace la funcion Split, lo vas a entender, sino no.

Testeala y lee bien el ejemplo.

Y por que no es recomendable? ...  Utilizo funciones fuera del framework, osea mejor!

GRACIAS POR LEER!!!


Título: Re: Ayuda! Separadores en un textbox
Publicado por: kub0x en 30 Mayo 2012, 20:19 pm
@79137913: En un principio no lei tu code completamente. Lo que creo que hace es separar cada palabra de otra añadiendole un separador, formando una cadena con el siguiente formato (ejemplo): Palabra;Palabra2;Palabra3; Funciona de esta forma?

No es recomendable dicha combinación por el hecho de que .NET es la evolucion de VB6 y trabaja con el Framework de .NET , el cual ofrece infinidad de clases para trabajar dentro del lenguaje, cosa que VB6 no contiene. Si vas a emplear sintaxis de VB6 en .NET , mejor que agarres VB6 xD (ironic mode). No, pero por ahí escuché críticas de algunos métodos de VB6 que están obsoletos en .NET

Saludos.


Título: Re: Ayuda! Separadores en un textbox
Publicado por: birdez en 30 Mayo 2012, 20:28 pm
 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


Título: Re: Ayuda! Separadores en un textbox
Publicado por: seba123neo en 30 Mayo 2012, 21:42 pm
hay muchas formas de hacer esto, expresiones regulares como siempre en esto es lo mas facil.

Código
  1. Imports System.Text.RegularExpressions
  2.  
  3. Public Class Form1
  4.  
  5.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  6.        Dim vCadenaSucia As String = "H,,...?¡¡¡¿¿¿}Çä&#8962;×&#9794;||---***+++@o()/&(@)&^@#><>?:\:';=-+_%$#'l[]a" 'Hola
  7.        Dim vCadenaLimpia As String = Regex.Replace(vCadenaSucia, "[^0-9a-zA-Z ]+", "")
  8.        MsgBox(vCadenaLimpia)
  9.    End Sub
  10. End Class


Título: Re: Ayuda! Separadores en un textbox
Publicado por: birdez en 30 Mayo 2012, 22:27 pm
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!


Título: Re: Ayuda! Separadores en un textbox
Publicado por: seba123neo en 30 Mayo 2012, 23:35 pm
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.


Título: Re: Ayuda! Separadores en un textbox
Publicado por: birdez en 30 Mayo 2012, 23:40 pm
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


Título: Re: Ayuda! Separadores en un textbox
Publicado por: 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:

Código:

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


Título: Re: Ayuda! Separadores en un textbox
Publicado por: Roboto en 31 Mayo 2012, 10:02 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:

Código:

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 " ".;,


Título: Re: Ayuda! Separadores en un textbox
Publicado por: birdez en 31 Mayo 2012, 17:01 pm
con el metodo Split entoences tengo que hacerlo? y si me encuentro un espacio, un punto o una coma? que tengo que hacer?


Título: Re: Ayuda! Separadores en un textbox
Publicado por: $Edu$ en 31 Mayo 2012, 18:56 pm
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:

Código:
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
  1.  
  2. array[i].Replace(",", "")
  3. array[i].Replace(".", "")
  4. array[i].Replace(";", "")
  5. array[i].Replace(" ", "") // yo lo pondria por si algo no salio bien xD
  6.  
  7.  

Asi ahora te quedara:

Código:
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.


Título: Re: Ayuda! Separadores en un textbox
Publicado por: birdez en 31 Mayo 2012, 19:18 pm
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


Título: Re: Ayuda! Separadores en un textbox
Publicado por: 79137913 en 31 Mayo 2012, 19:58 pm
HOLA!!!

dara 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
  1.  
  2. array[i].Replace(",", "")
  3. array[i].Replace(".", "")
  4. array[i].Replace(";", "")
  5. array[i].Replace(" ", "") // yo lo pondria por si algo no salio bien xD
  6.  

NO HAGAS ESO, antes de hacer el split lo haces, sino vas a consumir muchos mas recursos, es preferible hacerlo a la string entera  y luego con eso estas seguro de que los items no tienen ni coma ni punto ni nada.

GRACIAS POR LEER!!!


Título: Re: Ayuda! Separadores en un textbox
Publicado por: $Edu$ en 31 Mayo 2012, 20:02 pm
Tenes razon 79137913, lo pense mal a eso.

Birdez, no sabes leer, saludos


Título: Re: Ayuda! Separadores en un textbox
Publicado por: birdez en 31 Mayo 2012, 20:03 pm
esq el problema que no se hacer lo de que me detecte nada entonces no puedo solucionar el problema se q no me lo vais a dar hecho pro hay muchas cosas d las q me deciis q no entiendo a lo q os referiis xq como tampoco no tengo nignun cosigo pa ir fijándome...

gracias de todas formas x contestar y ayudar


Título: Re: Ayuda! Separadores en un textbox
Publicado por: birdez en 31 Mayo 2012, 20:05 pm
$Edu$ xq dices q no se leer?


Título: Re: Ayuda! Separadores en un textbox
Publicado por: $Edu$ en 31 Mayo 2012, 23:07 pm
Esque ya te dije como puedes hacerlo, que parte no entiendes? desde un principio no sabes como usar Split()? bueno pues es buscar en google y listo, menos de 20 segundos y obtenes tu respuesta.

Ademas de no leer no se te entiende casi nada cuando escribis, fijate que pones "cosigo", y te falta usar muchas comas para que se entienda todo mejor.

No te lo digo de burla ni para que lo tomes mal, sino para que tus respuestas sean mas rapidas la proxima vez. Fijate que se hicieron como 20 comentarios en este tema y si vos te planteabas bien tu pregunta, ponias ejemplos de lo que querias lograr, escribias bien, buscabas en google los terminos o cosas que no entendias de las respuestas.. tal vez hasta con 1 solo comentario ya te contestaban tu duda y ya hubieras terminado ese proyecto hace rato xD


Título: Re: Ayuda! Separadores en un textbox
Publicado por: seba123neo en 31 Mayo 2012, 23:13 pm
el foro es para preguntar algo especifico con ya un minimo conocimiento del tema, no para preguntar como se usa cada propiedad que vas descubriendo, sino se hace un topic de 500 post, para eso esta google o un libro de .NET que hay muchos en internet para bajar.


Título: Re: Ayuda! Separadores en un textbox
Publicado por: Roboto en 1 Junio 2012, 11:04 am
Aki esta lo k buscas

http://msdn.microsoft.com/es-es/library/ms228388(v=vs.80).aspx

Código:
class TestStringSplit
{
    static void Main()
    {
        char[] delimiterChars = { ' ', ',', '.', ':', '\t' };

        string text = "one\ttwo three:four,five six seven";
        System.Console.WriteLine("Original text: '{0}'", text);

        string[] words = text.Split(delimiterChars);
        System.Console.WriteLine("{0} words in text:", words.Length);

        foreach (string s in words)
        {
            System.Console.WriteLine(s);
        }
    }
}




Resultados


Original text: 'one     two three:four,five six seven'
7 words in text:
one
two
three
four
five
six
seven


Título: Re: Ayuda! Separadores en un textbox
Publicado por: birdez en 1 Junio 2012, 16:02 pm
tal vez tengáis razón pro me decíais cosas q no sabia como se usaban o no entendía bn a q os referíais, porque me pasabais cosas q yo no había visto nunca y se veía algo q no entendía pedía q me lo explicaran q seguramente me enteraría mejor si me lo decía alguien q no una guía en google, y alguna duda me surgía cuando me decíais algo por eso xq no lo había visto y no sabia lo q era para para la próxima vez ya lo tendré en cuenta gracias.


Título: Re: Ayuda! Separadores en un textbox
Publicado por: $Edu$ en 1 Junio 2012, 16:05 pm
Por eso mismo te lo decimos, no tanto como reto sino para que la proxima vez te ahorres mucho tiempo en sacar tus dudas.

Terminaste el codigo? puedes dejar la funcion y la miramos a ver que se puede mejorar.


Título: Re: Ayuda! Separadores en un textbox
Publicado por: birdez en 1 Junio 2012, 16:17 pm
no no lo termine estoy en ello xq hasta ahora mismo no puede ponerme con ello cuando lo termine os paso todo el código a ver q tal esta

gracias


Título: Re: Ayuda! Separadores en un textbox
Publicado por: Roboto en 1 Junio 2012, 17:47 pm
tal vez tengáis razón pro me decíais cosas q no sabia como se usaban o no entendía bn a q os referíais, porque me pasabais cosas q yo no había visto nunca y se veía algo q no entendía pedía q me lo explicaran q seguramente me enteraría mejor si me lo decía alguien q no una guía en google, y alguna duda me surgía cuando me decíais algo por eso xq no lo había visto y no sabia lo q era para para la próxima vez ya lo tendré en cuenta gracias.

si tu profe no te explico esas cosas,como demonios kiere k hagas ese traductor?¿?¿?¿? no hay otra forma viable de hacerlo.


Título: Re: Ayuda! Separadores en un textbox
Publicado por: birdez en 1 Junio 2012, 17:48 pm
una pregunta ice este codigo para q me separase las letras cuando encuentre un espacio:

Código:
Dim texto() As String = Split(TextBox1.Text, " ")
        Dim i As Integer
        For i = 0 To UBound(texto)
            MessageBox.Show(texto(i))
        Next
  
 

pro "el problema" es si encuentra una coma un punto...  hay alguna forma de poner algo parecido a esto?


Código:
Dim separador() As Char = {" ", ",", "."}
        Dim texto() As String = Split(TextBox1.Text, separador)
        Dim i As Integer
        For i = 0 To UBound(texto)
            MessageBox.Show(texto(i))
        Next

se q eso sta mal pro algo asi q me identifique varios separadores xq solo me separa espacion tal y como sta ahora si pongo otra cosa me devuelve el mismo texto q le paso todo junto



Título: Re: Ayuda! Separadores en un textbox
Publicado por: birdez en 1 Junio 2012, 17:49 pm
las expresiones regulares no nos las explico y lo del split lo explico un dia y icimos un mini ejercicio que lo dio en 5 mins x eso no lo entiendo bn


Título: Re: Ayuda! Separadores en un textbox
Publicado por: $Edu$ en 1 Junio 2012, 17:52 pm
No hagas doble post y lee lo que te dije que tenias que hacer.. sumandole la correccion de mi mal programacion por 79137913


Título: Re: Ayuda! Separadores en un textbox
Publicado por: Roboto en 1 Junio 2012, 17:55 pm
una pregunta ice este codigo para q me separase las letras cuando encuentre un espacio:

Código:
Dim texto() As String = Split(TextBox1.Text, " ")
        Dim i As Integer
        For i = 0 To UBound(texto)
            MessageBox.Show(texto(i))
        Next
  
 

pro "el problema" es si encuentra una coma un punto...  hay alguna forma de poner algo parecido a esto?


Código:
Dim separador() As Char = {" ", ",", "."}
        Dim texto() As String = Split(TextBox1.Text, separador)
        Dim i As Integer
        For i = 0 To UBound(texto)
            MessageBox.Show(texto(i))
        Next

se q eso sta mal pro algo asi q me identifique varios separadores xq solo me separa espacion tal y como sta ahora si pongo otra cosa me devuelve el mismo texto q le paso todo junto



En el link de mdsn creo k habia un ejemplo con VB


Título: Re: Ayuda! Separadores en un textbox
Publicado por: 79137913 en 1 Junio 2012, 17:58 pm
HOLA!!!

Mi funcion MultiSplit que te postee arriba hace exactamente lo que vos queres.

pro "el problema" es si encuentra una coma un punto...  hay alguna forma de poner algo parecido a esto?


Código:
Dim separador() As Char = {" ", ",", "."}
        Dim texto() As String = Split(TextBox1.Text, separador)
        Dim i As Integer
        For i = 0 To UBound(texto)
            MessageBox.Show(texto(i))
        Next


GRACIAS POR LEER!!!


Título: Re: Ayuda! Separadores en un textbox
Publicado por: Roboto en 1 Junio 2012, 18:00 pm
HOLA!!!

Mi funcion MultiSplit que te postee arriba hace exactamente lo que vos queres.

GRACIAS POR LEER!!!

podria añadirle ; y mas piruladas,pero si,creo k esa funcion esta correcta


Título: Re: Ayuda! Separadores en un textbox
Publicado por: birdez en 1 Junio 2012, 18:58 pm
HOLA!!!

Mi funcion MultiSplit que te postee arriba hace exactamente lo que vos queres.

GRACIAS POR LEER!!!


pro tu funcion la veo muy complicada y si le pongo eso no se va a creer q lo he hecho yo :S


por eso busco algo mucho mas sencillo


Título: Re: Ayuda! Separadores en un textbox
Publicado por: birdez en 1 Junio 2012, 19:00 pm
No hagas doble post y lee lo que te dije que tenias que hacer.. sumandole la correccion de mi mal programacion por 79137913


esq no entiendo a q te refieres con esto


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


el array ese que es?


Título: Re: Ayuda! Separadores en un textbox
Publicado por: 79137913 en 1 Junio 2012, 19:08 pm
HOLA!!!

esq no entiendo a q te refieres con esto
array.Replace(",", "")
array.Replace(".", "")
array.Replace(";", "")
array.Replace(" ", "") // yo lo pondria por si algo no salio bien xD
el array ese que es?

Pibe anda a estudiar.

GRACIAS POR LEER!!!


Título: Re: Ayuda! Separadores en un textbox
Publicado por: birdez en 1 Junio 2012, 19:22 pm
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!


Título: Re: Ayuda! Separadores en un textbox
Publicado por: $Edu$ en 1 Junio 2012, 20:26 pm
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


Título: Re: Ayuda! Separadores en un textbox
Publicado por: birdez en 1 Junio 2012, 21:17 pm
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


Código:


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



Título: Re: Ayuda! Separadores en un textbox
Publicado por: $Edu$ en 1 Junio 2012, 23:29 pm
Esque mira, asi se usa el Replace(), yo en su vez me confundi con esto tambien.

Código
  1. private void button3_Click(object sender, EventArgs e)
  2.        {
  3.            string texto;
  4.            string[] listado;
  5.  
  6.            texto = textBox1.Text;
  7.            texto = texto.Replace(";", "");
  8.            texto = texto.Replace(",", "");
  9.            texto = texto.Replace(".", "");
  10.            texto = texto.Replace("-", "");
  11.            texto = texto.Replace("_", "");
  12.            texto = texto.Replace("^", "");
  13.            texto = texto.Replace("*", "");
  14.            texto = texto.Replace("?", "");
  15.            texto = texto.Replace("¿", "");
  16.            texto = texto.Replace("!", "");
  17.            texto = texto.Replace("¡", "");
  18.            texto = texto.Replace("+", "");
  19.            texto = texto.Replace("/", "");
  20.            texto = texto.Replace("&", "");
  21.            texto = texto.Replace("%", "");
  22.            texto = texto.Replace("$", "");
  23.            texto = texto.Replace("·", "");
  24.            texto = texto.Replace("\"", ""); // remplaza las comillas dobles por nada (las quita)
  25.            texto = texto.Replace("%", "");
  26.            texto = texto.Replace("'", "");
  27.  
  28.            string[] delimitador = {" "};
  29.  
  30.            listado = texto.Split(delimitador, StringSplitOptions.RemoveEmptyEntries);
  31.  
  32.            foreach (string palabra in listado)
  33.            {
  34.              MessageBox.Show(palabra);
  35.  
  36.            }
  37.        }
  38.  
  39.  

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


Título: Re: Ayuda! Separadores en un textbox
Publicado por: birdez en 2 Junio 2012, 00:33 am
ok el codigo que tengo ahora es el siguiente y ya me elimina los separadores y me separa las palabras


Código:

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


Título: Re: Ayuda! Separadores en un textbox
Publicado por: $Edu$ en 2 Junio 2012, 02:10 am
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
  1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
  2.  
  3.        Dim lista() As String  ' creamos el array donde guardaremos las palabras
  4.        lista = Listado(TextBox1.Text) ' asignamos el array que devuelve la funcion Listado a nuestro array lista()
  5.  
  6.        If not Traducir(lista) then MessageBox.Show("Ha ocurrido un error!") ' Si esa funcion no da True, entonces hubo un error, como habiamos dicho
  7.    End Sub


Y la funcion Listado es asi:

Código
  1. Public Function Listado(ByVal texto As String) As String()
  2.        Dim list() As String
  3.        Dim separador As String = " "
  4.  
  5.            texto = texto.Replace(";", "")
  6.            texto = texto.Replace(",", "")
  7.            texto = texto.Replace(".", "")
  8.            texto = texto.Replace("-", "")
  9.            texto = texto.Replace("_", "")
  10.            texto = texto.Replace("^", "")
  11.            texto = texto.Replace("*", "")
  12.            texto = texto.Replace("?", "")
  13.            texto = texto.Replace("¿", "")
  14.            texto = texto.Replace("!", "")
  15.            texto = texto.Replace("¡", "")
  16.            texto = texto.Replace("+", "")
  17.            texto = texto.Replace("/", "")
  18.            texto = texto.Replace("&", "")
  19.            texto = texto.Replace("%", "")
  20.            texto = texto.Replace("$", "")
  21.            texto = texto.Replace("·", "")
  22.            texto = texto.Replace("\"", "") 'remplaza las comillas dobles por nada (las quita)
  23.            texto = texto.Replace("%", "")
  24.            texto = texto.Replace("'", "")
  25.  
  26.        list = Split(texto, separador)
  27.  
  28.        Return list
  29.  
  30. End Function
  31.  
  32.  

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.


Título: Re: Ayuda! Separadores en un textbox
Publicado por: birdez en 2 Junio 2012, 02:20 am
 $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


Título: Re: Ayuda! Separadores en un textbox
Publicado por: $Edu$ en 2 Junio 2012, 02:50 am
De nada, espero que no traigas las funciones que te deje todas cambiadas con errores xD Saludos


Título: Re: Ayuda! Separadores en un textbox
Publicado por: $Edu$ en 15 Julio 2012, 02:43 am
soy el edu


Título: Re: Ayuda! Separadores en un textbox
Publicado por: MaLkAvIaN_NeT en 17 Julio 2012, 04:38 am
puedes utilizar replace