recorrer un textbox

20/12/2005 - 09:21 por Sonia | Informe spam
hola!
tengo varios numeros en un textbox separados por ',' y me gustaria tener un
contador por numero q se vaya incrementando segun aparezca un mismo numero
en el textbox.
me explico:
si en el textbox1 tengo esto: 1,1,1,2,2,3
pues me gustaria tener:
cont1=3
cont2=2
con3=1

cual es la mejor forma de hacer esto?
gracias!
 

Leer las respuestas

#1 Enrique
21/12/2005 - 20:37 | Informe spam
uhmmmm. no se si te entendido bien pero a ver si te ayuda lo siguiente:

Dim cadena As String = "1,1,1,2,3,5"

Dim cont0, cont1, cont2, cont3, cont4, cont5, cont6, cont7, cont8, cont9 As
Integer

Dim i As Integer

For i = 0 To cadena.Length - 1

Dim carIesimo As String = cadena.Substring(i, 1)

If carIesimo <> "," Then

Select Case Int(carIesimo)

Case 0

cont0 += 1

Case 1

cont1 += 1

Case 2

cont2 += 1

Case 3

cont3 += 1

Case 4

cont4 += 1

Case 5

cont5 += 1

Case 6

cont6 += 1

Case 7

cont7 += 1

Case 8

cont8 += 1

Case 9

cont9 += 1

End Select

End If

Next

'mostramos el resultado

Dim msg As String = ""

msg &= "cont0: " & cont0 & vbCrLf

msg &= "cont1: " & cont1 & vbCrLf

msg &= "cont2: " & cont2 & vbCrLf

msg &= "cont3: " & cont3 & vbCrLf

msg &= "cont4: " & cont4 & vbCrLf

msg &= "cont5: " & cont5 & vbCrLf

msg &= "cont6: " & cont6 & vbCrLf

msg &= "cont7: " & cont7 & vbCrLf

msg &= "cont8: " & cont8 & vbCrLf

msg &= "cont9: " & cont9 & vbCrLf

MsgBox(msg)

End Sub



o mejor ...



Private Sub pos2()

Dim cadena As String = "1,1,1,2,3,5"

Dim cont(9) As Short

Dim i As Integer

For i = 0 To cadena.Length - 1

Dim carIesimo As String = cadena.Substring(i, 1)

If carIesimo <> "," Then

Select Case Int(carIesimo)

Case 0

cont(0) += 1

Case 1

cont(1) += 1

Case 2

cont(2) += 1

Case 3

cont(3) += 1

Case 4

cont(4) += 1

Case 5

cont(5) += 1

Case 6

cont(6) += 1

Case 7

cont(7) += 1

Case 8

cont(8) += 1

Case 9

cont(9) += 1

End Select

End If

Next

'mostramos el resultado

Dim msg As String = ""

For i = 0 To 9

msg &= "cont" & i & ": " & cont(i) & ControlChars.CrLf

Next

MsgBox(msg)

End Sub



otra forma mejor todavia pues mas compacta es la siguiente:

Private Sub pos3()

Dim cadena As String = "1,1,1,2,3,5"

Dim cont(9) As Short

Dim i As Integer

For i = 0 To cadena.Length - 1

Dim carIesimo As String = cadena.Substring(i, 1)

If carIesimo <> "," Then

Select Case Int(carIesimo)

Case -1

Case Else

cont(Int(carIesimo)) += 1

End Select

End If

Next

'mostramos el resultado

Dim msg As String = ""

For i = 0 To 9

msg &= "cont" & i & ": " & cont(i) & ControlChars.CrLf



esto ultimo lo puedes hacer en plan procedimiento que llamas pasandolo como
parametro de entrada tu textbox (seria: call contadores(me.textbox1.text)).
yo lo he hecho con cadena

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click

Dim cadena As String = "1,1,1,2,3,5"

Call contadores(cadena)

End Sub

Private Sub contadores(ByVal cadena As String)

If cadena = "" Then

Exit Sub

Else

Dim cont(9) As Short

Dim i As Integer

For i = 0 To cadena.Length - 1

Dim carIesimo As String = cadena.Substring(i, 1)

If carIesimo <> "," Then

Select Case Int(carIesimo)

Case -1

Case Else

cont(Int(carIesimo)) += 1

End Select

End If

Next

Dim msg As String = ""

For i = 0 To 9

msg &= "cont" & i & ": " & cont(i) & ControlChars.CrLf

Next

MsgBox(msg)

End If

End Sub

pueden existir mas formas ya que aqui las variables son locales. puedes
crear variables privadas (con private) y modificar sus valores desde el
procedimiento o incluso crear una funcion que devuelva un vector abierto que
monitorizas por otro lado. hay simplemente que entender que un procedimiento
que actua sobre varias variables globales es equivalente a una funcion en el
sentido que en cierta medida modifica valores.



espero que te ayude de algo y si tienes pegas, ponlas aqui y si no te
respondo crea nuevo hilo que ya se sabe que despues de unas cuantas
respuestas por mucho que tengas mas preguntas, la gente ya no te responde
:-)



Next

MsgBox(msg)

End Sub

Preguntas similares