2009-10-28 17 views
22

per esempio, posso fare questo:vb.net: si può dividere una stringa da una stringa

split = temp_string.Split("<beginning of record>") 

quelli di voi Raccomandato:

split = Regex.Split(temp_string, "< beginning of record >") 

non il suo lavoro. il suo solo restituendo il primo carattere "<"

e quelli di voi che raccomanda:

Dim myDelims As String() = New String(){"< beginning of record >"} 
split = temp_string.Split(myDelims, StringSplitOptions.None) 

questo non sta funzionando neanche. è anche il ritorno solo il primo carattere

+0

Credo che il problema è che è necessario per sfuggire alle chevron. Vedi la mia modifica. –

+1

Se continui ad avere problemi potresti voler dare un esempio di questo in temp_string. Il tuo esempio funziona bene per temp_string = "prima di dopo" –

+0

Regex.split ha funzionato per me. L'opzione char array con String.split sembra che dovrebbe dividere ogni riferimento di <, b, e, g, i, n, n, i, n, g, ecc singolarmente piuttosto che nel suo insieme. – Jono

risposta

31

Prova questo:

string[] myDelims = new string[] { "<beginning of record>" }; 
split = temp_string.Split(myDelims,StringSplitOptions.None); 

L'esecuzione di questo attraverso un convertitore di codice risultati in questo:

Dim myDelims As String() = New String() { "<beginning of record>" } 
split = temp_string.Split(myDelims, StringSplitOptions.None) 

Potrebbe anche essere necessario per sfuggire alle chevron, come questo:

"\< beginning of record \>" 
+1

matt posso ottenerlo nel formato vb.net per favore –

1

io non la penso così, ci vogliono solo caratteri. Potresti fare un brutto schermaggio e sostituire prima tutte le istanze della stringa con un personaggio che non esiste già nella stringa, e quindi per suddividere su quel personaggio.

Modificato per aggiungere: Penso che Regex.Split sia in grado di eseguire lo split su un'espressione regolare, quindi se si esegue un'espressione regolare che è semplicemente la stringa su cui si desidera dividere, dovrebbe funzionare.

+0

brian puoi darmi il codice per quello –

+0

split = Regex.Split (temp_string, "")? –

+0

forse qualcosa del genere? modello = "" r fioco come Regex r = new Regex (pattern) Dim risultati come String() risultati = r.Split (temp_string) potrebbero funzionare ... Non conosco vb o altro, solo un'ipotesi basata sulla documentazione –

5

Si potrebbe guardare Regex.Split() - metodo.

E questo sembra funzionare

dim s as string = "you have a <funny> thing <funny> going on" 
    dim a() as string = Regex.Split(s,"<funny>") 
    for each b as string in a 
    Response.Write(b & "<br>") 
    next 
15

@Matthew Jones risposta 'in VB.NET

Dim delim as String() = New String(0) { "<beginning of record>" } 
split = temp_string.Split(delim, StringSplitOptions.None) 
+0

+1 perché mi hai battuto –

2

Se siete veramente scissione è XML letto in una stringa, quindi non utilizzare VB stringhe per fare quel lavoro. Usa XSLT. VB/C# ha metodi per il rendering di XML con XSLT. Sarà molto più veloce e più affidabile.

3

questo sembra funzionare

Dim myString As String = "aaajjbbbjjccc" 
    Dim mySplit() As Char = "jj".ToCharArray 
    Dim myResult() As String = myString.Split(mySplit, StringSplitOptions.RemoveEmptyEntries) 
6

Potete scrivere da soli un metodo di estensione per rendere più facile (basata sulla risposta da Matthew Jones)

(che dovrei mostrare un esempio pure. ..)

Dim results = "hay needle hay needle hay".Split("needle") 
' results(0) = "hay " 
' results(1) = " hay " 
' results(2) = " hay" 

... C# ...

public static class Tools 
{ 
    public static string[] Split(this string input, params string[] delimiter) 
    { 
     return input.Split(delimiter, StringSplitOptions.None); 
    } 
} 

... VB.Net ...

Module Tools 
    <Extension()> _ 
    Public Function Split(ByVal input As String, _ 
          ByVal ParamArray delimiter As String()) As String() 
     Return input.Split(delimiter, StringSplitOptions.None) 
    End Function 
End Module