Parse di una stringa con parentesi quadre

mercoledì 01 agosto 2012 - 15.26
Tag Elenco Tags  VB.NET  |  .NET 2.0  |  Windows Server 2003  |  Windows Server 2000  |  Windows 7  |  Windows Vista  |  Windows XP  |  Visual Studio 2005  |  Visual Studio 2003

franco.geko Profilo | Junior Member

Ciao a tutti,
avrei la necessità di dividere delle stringhe i cui 'pezzi' sono tra parentesi quadre

Es.
[Primo pezzo di stringa][Secondo pezzo di stringa][Terzo pezzo]....[Nesimo pezzo]

Dovrei ricavare dalla stringa sopra un array di N elementi elementi contenente gli elementi tra quadre
(0) = "Primo pezzo di stringa"
(1) = "Secondo pezzo di stringa"
(3) = "Terzo pezzo"
...
(N-1) = "Nesimo pezzo"

Credo si debbano usare le regex delle quali però sono alquanto a digiuno....
un aiutino? :)

Grazie
Franco
Assaggiata l'acqua, conosciuta la sorgente

AntCiar Profilo | Expert

Ciao.

Potresti fare in questo modo:

Dim tmp As String = "[Primo pezzo di stringa][Secondo pezzo di stringa][Terzo pezzo]"
Dim arList As String() = Split(tmp, "][")

L'unica "pecca" è che nel primo e ultimo elemento dell'array ci sono rispettivamente la parentesi aperta e chiusa.
Se quindi fai una iterazione sull'insieme per valutarne gli elementi, controlla la presenza delle parentesi
Cristian Barca

Vinsent Profilo | Senior Member

>Ciao.
>
>Potresti fare in questo modo:
>
>Dim tmp As String = "[Primo pezzo di stringa][Secondo pezzo di
>stringa][Terzo pezzo]"
>Dim arList As String() = Split(tmp, "][")
>
>L'unica "pecca" è che nel primo e ultimo elemento dell'array
>ci sono rispettivamente la parentesi aperta e chiusa.
>Se quindi fai una iterazione sull'insieme per valutarne gli elementi,
>controlla la presenza delle parentesi
>Cristian Barca

Si può usare Replace, o Remove, sul primo e ultimo item dell' array:
Dim tmp As String = "[Primo pezzo di stringa][Secondo pezzo di stringa][Terzo pezzo]" Dim arList As String() = Split(tmp, "][") arList(0) = arList(0).Replace("[", "") arList(arList.Count - 1) = arList(arList.Count - 1).Replace("]", "")

ciao

franco.geko Profilo | Junior Member

Grazie a tutti! :)

Ho comunque risolto con le regex

Private Sub ParseText(ByVal Text As String) Dim Lines() As String Lines = Text.Split(vbCrLf) Dim Reg As Regex = New Regex("\[(?<contenuto>[\w\W-[\[\]\n]]*)\]") Dim Matches As MatchCollection For Each s As String In Lines Matches = Reg.Matches(s) For Each m As Match In Matches MsgBox(m.Value) Next Next End Sub

Grazie a tutti! ;)

Ciao
Franco
Assaggiata l'acqua, conosciuta la sorgente
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5