2009-10-28 5 views
22

par exemple, puis-je faire ceci:vb.net: pouvez-vous diviser une chaîne par une chaîne

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

ceux recommandé:

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

son ne fonctionne pas. son juste retour le premier char « < »

et ceux d'entre vous qui a recommandé:

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

cela ne fonctionne pas non plus. il est également revenir juste le premier caractère

+0

Je pense que le problème est que vous devez échapper aux Chevrons. Voir ma modification. –

+1

Si vous continuez à avoir des problèmes, vous pouvez donner un exemple de cela dans temp_string. Votre exemple fonctionne correctement pour temp_string = "avant après" –

+0

Regex.split a fonctionné pour moi. L'option char array avec String.split semble devoir se séparer à chaque référence de <, b, e, g, i, n, n, i, n, g, etc. individuellement plutôt que dans son ensemble. – Jono

Répondre

31

Essayez ceci:

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

En l'utilisant un résultat de conversion de code dans cette:

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

Vous pouvez aussi avoir besoin d'échapper aux Chevrons, comme ceci:

"\< beginning of record \>" 
+1

matt puis-je obtenir que dans le format vb.net s'il vous plaît –

1

Je ne pense pas, il suffit de caractères. Vous pouvez faire un travail de bidouille laid et remplacer d'abord toute instance de la chaîne avec un caractère qui n'existe pas déjà dans la chaîne, puis de Split sur ce caractère.

Edité pour ajouter: Je pense que Regex.Split est capable de faire la division sur une regex, donc si vous faites une simple regex qui est simplement la chaîne que vous voulez diviser, cela devrait fonctionner.

+0

brian pouvez-vous s'il vous plaît donnez-moi le code pour cela –

+0

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

+0

peut-être quelque chose comme ça? pattern = "" Dim r Comme Regex r = new Regex (modèle) résultats Dim As String() résultats = r.Split (temp_string) pourrait fonctionner ... Je ne sais pas vb ou quoi que ce soit, juste une supposition basée sur la documentation –

5

Vous pouvez consulter la méthode Regex.Split().

Et cela semble fonctionner

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 'réponse VB.NET

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

+1 parce que tu m'as battu –

2

Si ce que vous êtes vraiment fendage XML lu dans une chaîne, puis ne pas utiliser VB cordes pour faire ce travail. Utilisez XSLT. VB/C# ont des méthodes pour rendre XML avec XSLT. Ce sera beaucoup plus rapide et plus fiable.

3

ce semble fonctionner

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

Vous pouvez écrire vous-même une méthode d'extension pour le rendre plus facile (Basé sur la réponse par Matthew Jones)

(suppose que je devrais montrer un exemple aussi bien. ..)

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 
Questions connexes