21/03/14 22:56
Jake7zDunn
Avrei il bisogno di manipolare una stringa multilinea affinche mi restituisca un array contenente solo alcune linee contenenti parole specifiche
ad esempio ho questa stringa
##marco
@luca
++giacomo
++filippo
**bruce
++antonio
##stefano
@gianni
e vorrei inserire in un array solo le stringhe che contengono ++ o @
premetto che splittando la stringa linea per linea e usare string.contains lo so fare ma volevo qualcosa di più veloce dato che ho a che fare con stringhe di dimensioni molto grosse.
quindi avevo pensato ad un'espressione regolare che rimuovesse tutto a parte le linee contenenti ad esempio ++ o @ e poi usare split per ottenere rapidamente l'array.
non so illuminatemi o indirizzatemi dato che sul web non ho trovato cose molto utili.
Ultima modifica effettuata da Jake7zDunn 21/03/14 22:57
aaa
21/03/14 23:31
Roby94
Primissima cosa, attento a come usi il termine stringa, manderesti facilmente in confusione qualcuno...
Allora, si, con le Regex è una passeggiata, la domanda che ti devo porre però è, devi selezionare le "linee" che iniziano per "++" || "@" oppure che contengano "++" || "@"?
aaa
22/03/14 0:03
Jake7zDunn
beh in effetti il termine stringa l'ho usato un po' a sproposito xD.
comunque devo selezionare le linee che contengono "++" || "@" perché potrebbero non essere all'inizio della linea
es. jwfeweijf@wfgboiejwiof
aaa
22/03/14 23:47
Jake7zDunn
Innanzitutto grazie per la spiegazione molto dettagliata che mi ha fatto capire almeno le basi.
Ho usato la classe Regex nel namespace System.Text.RegularExpressions di .NET in questo modo per provare:
Dim Text As String = "##marco" + vbCrLf + "@luca" + vbCrLf + "++giacomo" + vbCrLf + "+filippo" + vbCrLf + "**bruce" + vbCrLf + "++antonio" + vbCrLf + "##stefano" + vbCrLf + "n@gianni"
Dim R As New Regex("(.*(?:@|\+{2}).*)")
Dim Matches As MatchCollection = R.Matches(Text)
For Each M As Match In Matches
MsgBox(M.Groups(1).Value())
Next
Naturalmente grazie a te adesso ho almeno capito a cosa si riferiva quel Groups del match. Però mi sono sorti alcuni dubbi: "g" penso non serva perché usando "R.Matches(Text)" comprendo già tutti risultati, mentre "m", "^" e "$" non ho capito perché non servono. Se riesci a darmi una risposta su quest'ultimo punto te ne sarei davvero grato
Ah e grazie per i link, davvero molto utili ! thx !
Ultima modifica effettuata da Jake7zDunn 22/03/14 23:48
aaa
23/03/14 1:00
Roby94
Prego, guarda ci sono rimasto un po' titubante pure io sul fatto che non gli servissero... adesso credo che il motivo stia in quel ritorno fatto con "vbCrLf" sinceramente il vb.net lo uso solo per aiutare la mia ragazza con un suo attuale programma, quindi non lo conosco troppo bene, io ho sempre vissuto di C#. Bisognerebbe informarsi su come si comporta il metodo Matches con questo elemento, aspettiamo che risponda qualcuno che conosca meglio l'argomento
Edit:
Facciamo una cosa, proviamo ad escluderlo dall'equazione sostituendolo con il classico carattere "\n" e vediamo cosa succede.
Ultima modifica effettuata da Roby94 23/03/14 1:03
aaa