none
separar cadena numerica RRS feed

  • Pregunta

  • hola gente del foro, mi pregunta es bastante simple... tengo en un textbox esta cadena de nros 32;5;31;51:42:15:4:12:52:1.... y quiero separarlos de manera q el primer par o grupo vaya a un textbox, el segundo al siguiente textbox... y asi sucesivamente hasta terminar la cadena... es muy simple pro estoy trabado.. Gracias
    lunes, 24 de agosto de 2015 23:42

Todas las respuestas

  • Con el método split tu puedes separar los números, esto te los dará en un array

    String.Split

    ahora bien puedes hacer un for y un case en el que cada numero se asigne a un text box... o si lo quieres hacer mas dinámico puedes hacer algo de este tipo, claro adaptándolo a tus necesidades

    foreach (Control x in this.Controls)
    {
      if (x is TextBox)
      {
        ((TextBox)x).Text = [Numero];
      }
    }

    con eso recorres todos los controles tipo textbox en un form


    Ing. Carlos Monroy MCP, MCAD, MCSD, MCTS

    lunes, 24 de agosto de 2015 23:47
  • disculps... es en vb 2010.. perdon

    martes, 25 de agosto de 2015 0:21
  • La diferencia es mu pequeña, sobre el split, en la pagina esta el código tanto en C# como en vb.net y para recorrer los controles 

      Dim ctrl As Control
      For Each ctrl In Panel1.Controls
      If (ctrl.GetType() Is GetType(TextBox)) Then
          Dim txt As TextBox = CType(ctrl, TextBox)
          txt.BackColor = Color.LightYellow
      End If

    Puedes usar algo asi


    Ing. Carlos Monroy MCP, MCAD, MCSD, MCTS

    martes, 25 de agosto de 2015 0:31
  • gracias por la respuesta.. pero m parece q no m explique bien.... son 10 pares de numeros aleatorios, separados por punto y coma, lo que quiero es mandar a 10 textbox distintos cada par. sin repetir datos.
    martes, 25 de agosto de 2015 0:59
  • hola

    pero alli noto que no llevas un logica en la cadena, los primeros valores se separan con punto y coma y el segundo con dos puntos

    a que primer y segundo grupo haces referencia ?

    imagino para separar la cadena conoces el metodo Split() no ?

    Dim cadena As String = "32;5;31;51:42:15:4:12:52:1"
    
    Dim partes() As String = cadena.Split(New Char() { ';', ':' })


    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 25 de agosto de 2015 1:09
  • ok... pro y como lo envio a que me los muestre en diferents textbox...
    martes, 25 de agosto de 2015 1:50
  • Hola marcelo863,

    Puedes hacer lo siguiente:

    Dim cadena As String = "32;5;31;51:42:15:4:12:52:1"
    Dim flag As Boolean = True
    
    Dim numeros As String() = cadena.Split(New Char() {";", ":"})
    
    For Each item As String In numeros
    	If flag Then
    		txtTextBox1.Text = Convert.ToString(txtTextBox1.Text + " "C) & item
    	Else
    		txtTextBox2.Text = Convert.ToString(txtTextBox2.Text + " "C) & item
    	End If
    
    	flag = Not flag
    Next

    Si la solución propuesta atendió su consulta no olvide marcarla como respuesta.

    Willams Morales
    Arequipa - PERÚ

    martes, 25 de agosto de 2015 2:20
  • Hola marcelo,

    Espero haber entendido tu pregunta, y que este ejemplo te ayude:

     Sub Main()
    
            Dim cadena As String = "32;5;31;51:42:15:4:12:52:1"
            Console.WriteLine("Cadena original: {0}", cadena)
            Dim numeros As String() = cadena.Split(New Char() {";", ":"})
            Dim esPrimerGrupo As Boolean = False
    
            For i As Integer = 0 To numeros.Length
                Dim values = numeros.Skip(i * 2).Take(2)
                If values(0) Is Nothing Then
                    Exit For
                End If
    
                If Not (esPrimerGrupo) Then
                    Console.WriteLine("Primer grupo: {0}, {1}", values(0), values(1))
                    esPrimerGrupo = True
                Else
                    esPrimerGrupo = False
                    Console.WriteLine("Segundo grupo: {0}, {1}", values(0), values(1))
                End If
            Next
            Console.ReadLine()
    
        End Sub

    En el ejemplo, son diez números

    >> el primer par o grupo vaya a un textbox, el segundo al siguiente textbox

    Entonces los números 32 y 5 van al primer grupo, y 31 y 51 al segundo, y así sucesivamente.

    No los puse en un TextBox, porque hice una aplicación de consola, espero te ayude.

    Saludos

    martes, 25 de agosto de 2015 3:30
  • hola

    >>como lo envio a que me los muestre en diferents textbox.

    podria ser algo como

    Dim cadena As String = "32;5;31;51:42:15:4:12:52:1" Dim partes() As String = cadena.Split(New Char() { ';', ':' })

    Dim ctrls As TextBox = this.Controls.OfType(Of TextBox)

    Dim index As Integer = 0

    ForEach ctrl As TextBox In ctrls

    If partes.Length < index Then

    Exit For

    End If

    ctrl.Text = partes(index)

    index += 1

    Next

    como veras recorres los textbox del form y a cada uno le asignas una posicion del array de partes que obteines del split

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 25 de agosto de 2015 4:01