View Full Version : [VB 2005] Dividere contenuto di una TextBox
Salve gente, avrei un problemino, è un giorno intero che ci sbatto la testa, ma nada. Dunque, in una textbox ho il seguente contenuto:
(i dati sono di esempio)
Gruppo1, Matricola 1213, Dominio: NT
Gruppo1, Matricola 1215, Dominio: NT
Gruppo1, Matricola 1218, Dominio: NT
Gruppo2, Matricola 1312, Dominio: NT
Gruppo2, Matricola 1511, Dominio: NT
Gruppo2, Matricola 1616, Dominio: NT
Gruppo3, Matricola 1111, Dominio: NT
Gruppo3, Matricola 1414, Dominio: NT
Gruppo3, Matricola 1614, Dominio: NT
ok? bene, a me servirebbe trasformare il contenuto di questa text cosi:
Gruppo1
Matricola 1213, Dominio: NT
Matricola 1215, Dominio: NT
Matricola 1218, Dominio: NT
Gruppo2
Matricola 1312, Dominio: NT
Matricola 1511, Dominio: NT
Matricola 1616, Dominio: NT
Gruppo3
Matricola 1111, Dominio: NT
Matricola 1414, Dominio: NT
Matricola 1614, Dominio: NT
come posso fare ?
(ho provato con cicli for, do while ecc, ma il risultato al max era:
Gruppo1
Matricola 1213, Dominio: NT
Gruppo1
Matricola 1215, Dominio: NT
Gruppo1
Matricola 1218, Dominio: NT
poiche per ogni occorrenza mi ripeta anche il "gruppo"...:muro:
Stai cercando di fare un albero.
Perche' non usare un componente albero? (TreeView)
Comunque non ho capito dove stia il problema. Sei tu che ordini e ristampi le cose no?
E' sufficiente stampare "Gruppo X" solo se X e' diversa dal valore precedente.
Alura,
Perche mi servono i dati nell'altra maniera ?
Come dice all'inizio, i dati erano fittizi
Gruppo1
Matricola 1213, Dominio: NT
Matricola 1215, Dominio: NT
Matricola 1218, Dominio: NT
i dati mi servono cosi per fare il dump su una active directory e debbono per forza essere cosi.
il dato FINALE sarebbe una cosa di questo genere:
dn: CN=Gruppo1 ,CN=Users,DC=locale,DC=Roma,DC=it
changetype: modify
replace: member
member: CN=1213,CN=Users,DC=locale,DC=Roma,DC=it
member: CN=1518,CN=Users,DC=locale,DC=Roma,DC=it
mentre io ho questo dato:
Gruppo1 member: CN=1213,CN=Users,DC=locale,DC=Roma,DC=it
Gruppo1 member: CN=1518,CN=Users,DC=locale,DC=Roma,DC=it
Non capisco davvero il problema.
Hai detto che hai:
Gruppo1
Matricola 1213, Dominio: NT
Matricola 1215, Dominio: NT
Matricola 1218, Dominio: NT
qualcosa tipo
for (su tutte le righe)
{
If (inizia con Gruppo)
Scrivi "dn: CN Gruppo, CN Users, ....)
Else if (inizia con matricola)
Scrivi "member:CN=qualcosa"
Else Errore
}
Non capisco davvero il problema.
Hai detto che hai:
Gruppo1
Matricola 1213, Dominio: NT
Matricola 1215, Dominio: NT
Matricola 1218, Dominio: NT
qualcosa tipo
for (su tutte le righe)
{
If (inizia con Gruppo)
Scrivi "dn: CN Gruppo, CN Users, ....)
Else if (inizia con matricola)
Scrivi "member:CN=qualcosa"
Else Errore
}
Ciao gugoXX, innanzitutto ti ringrazio,
quello che ho io non è
Gruppo1
Matricola 1213, Dominio: NT
Matricola 1215, Dominio: NT
Matricola 1218, Dominio: NT
ma bensi:
Gruppo1, Matricola 1213, Dominio: NT
Gruppo1, Matricola 1215, Dominio: NT
Gruppo1, Matricola 1218, Dominio: NT
Gruppo2, Matricola 1312, Dominio: NT
Gruppo2, Matricola 1511, Dominio: NT
Gruppo2, Matricola 1616, Dominio: NT
Gruppo3, Matricola 1111, Dominio: NT
Gruppo3, Matricola 1414, Dominio: NT
Gruppo3, Matricola 1614, Dominio: NT
è il risultato finale che dovrebbe essere:
Gruppo1
Matricola 1213, Dominio: NT
Matricola 1215, Dominio: NT
Matricola 1218, Dominio: NT
Gruppo2
ecc...
ecc...
non so se mi sono spiegato bene !
Ti ringrazio infinitamente :-)
Una soluzione l'avevo gia' proposta
vecchiogruppo="";
for(su tutte le righe)
{
questogruppo=prendo il gruppo della riga corrente con substring
if (questogruppo!=vecchiogruppo)
Write "Gruppo="+QuestoGruppo
Write RestanteParteDellaRiga con Substring
vecchiogruppo=questogruppo
}
Salve gente, avrei un problemino, è un giorno intero che ci sbatto la testa, ma nada. Dunque, in una textbox ho il seguente contenuto:
(i dati sono di esempio)
Gruppo1, Matricola 1213, Dominio: NT
Gruppo1, Matricola 1215, Dominio: NT
Gruppo1, Matricola 1218, Dominio: NT
Gruppo2, Matricola 1312, Dominio: NT
Gruppo2, Matricola 1511, Dominio: NT
Gruppo2, Matricola 1616, Dominio: NT
Gruppo3, Matricola 1111, Dominio: NT
Gruppo3, Matricola 1414, Dominio: NT
Gruppo3, Matricola 1614, Dominio: NT
ok? bene, a me servirebbe trasformare il contenuto di questa text cosi:
Gruppo1
Matricola 1213, Dominio: NT
Matricola 1215, Dominio: NT
Matricola 1218, Dominio: NT
Gruppo2
Matricola 1312, Dominio: NT
Matricola 1511, Dominio: NT
Matricola 1616, Dominio: NT
Gruppo3
Matricola 1111, Dominio: NT
Matricola 1414, Dominio: NT
Matricola 1614, Dominio: NT
come posso fare ?
...
Io farei così : nel mio esempio ci sono 2 textbox, la prima contiene la stringa di partenza, come l'hai postata tu, mentre la TextBox2 è destinata a contenere il risultato.
Il codice è il seguente ( sicuramente può essere ottimizzato e snellito, ma l'ho buttato giù di getto in pochi min. perciò... accontentati :D ) :
Dim strPre As String
strPre = TextBox1.Text
Dim strPost As String = ""
Dim testPre As String = "_"
Dim arrayStr() As String
arrayStr = stringa.Split(vbCrLf)
Dim i As Integer = 0
For i = 0 To arrayStr.GetUpperBound(0)
Dim strLinea As String = CStr(arrayStr(i)).Trim
If strLinea.StartsWith(vbCrLf) Then strLinea = Mid(strLinea, 2, strLinea.Length - 1)
Dim test As String = Mid(strLinea, 1, 7)
If test.Equals(testPre) Then
strPost = strPost & vbCrLf & Mid(strLinea, test.Length + 3, strLinea.Length - (test.Length + 2))
Else
If Not strPost.Equals("") Then
strPost = strPost & vbCrLf & vbCrLf
strPost = strPost & test
strPost = strPost & vbCrLf & Mid(strLinea, test.Length + 3, strLinea.Length - (test.Length + 2))
Else
strPost = strPost & test
strPost = strPost & vbCrLf & Mid(strLinea, test.Length + 3, strLinea.Length - (test.Length + 2))
End If
End If
testPre = test
Next
TextBox2.Text = strPost
Intanto prova... ;)
Ciao Marco, grazie
ho provato, ma mi da errore qui:
arrayStr = stringa.Split(vbCrLf)
mi dice che stringa non è stato dichiarato
Ciao Marco, grazie
ho provato, ma mi da errore qui:
arrayStr = stringa.Split(vbCrLf)
mi dice che stringa non è stato dichiarato
:doh:
Errore mio, ( eehhh, quando si fanno le cose di fretta... ) ma si rimedia subito :
Dim strPre As String
strPre = TextBox1.Text
Dim strPost As String = ""
Dim testPre As String = "_"
Dim arrayStr() As String
arrayStr = strPre.Split(vbCrLf)
Dim i As Integer = 0
For i = 0 To arrayStr.GetUpperBound(0)
Dim strLinea As String = CStr(arrayStr(i)).Trim
If strLinea.StartsWith(vbCrLf) Then strLinea = Mid(strLinea, 2, strLinea.Length - 1)
Dim test As String = Mid(strLinea, 1, 7)
If test.Equals(testPre) Then
strPost = strPost & vbCrLf & Mid(strLinea, test.Length + 3, strLinea.Length - (test.Length + 2))
Else
If Not strPost.Equals("") Then
strPost = strPost & vbCrLf & vbCrLf
strPost = strPost & test
strPost = strPost & vbCrLf & Mid(strLinea, test.Length + 3, strLinea.Length - (test.Length + 2))
Else
strPost = strPost & test
strPost = strPost & vbCrLf & Mid(strLinea, test.Length + 3, strLinea.Length - (test.Length + 2))
End If
End If
testPre = test
Next
TextBox2.Text = strPost
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.