2009-08-21 5 views
0

J'ai une question concernant la fonction de séparation utilisée dans Visual Basic. A partir de maintenant, j'ai écrit une fonction qui apporte une valeur de chaîne. La valeur de chaîne renvoyée ressemblera probablement à ceci "List1; List2; Field1, Field2". Mon but est d'utiliser la fonction split pour cette chaîne pour mettre toutes les listes dans un tableau et placer les champs dans un autre tableau.Manipulation de la fonction de division pour deux baies

Le problème est entre où List2 et Field1 sont. Je ne veux pas que Field1 soit placé dans le tableau de liste. Je pense qu'il pourrait y avoir un moyen de faire cela en analysant mais je ne suis pas sûr. Voici mon code actuel ci-dessous. Merci d'avance pour votre aide.

 Dim s As String = GetSetting("ReOrderList", properties.SiteId) 
     Dim affectedLists() As String = s.Split(";") 
     Dim affectedFields() As String = s.Split(",") 
+0

"La valeur de chaîne retournée ressemblera probablement à ceci" List1; List2; Champ1, Champ2 "." Wow, c'est brutal. Avez-vous accès à ce code? Est-il possible pour vous de renvoyer une chaîne plus cohérente, ou avez la fonction qui génère la chaîne retourner vos deux tableaux pour vous? – Juliet

Répondre

0

Si vous savez que les listes viendront avant les champs, vous pouvez couper la chaîne au dernier ';' caractère:

Dim splitPos As Integer = input.LastIndexOf(";"c) 
Dim lists As String = input.Substring(0, splitPos+1) 
Dim fields As String = input.Substring(splitPos+1, input.Length - (splitPos+1)) 

Ensuite, vous pouvez travailler sur les listes et les champs séparément.

0

Utilisez String.LastIndexOf pour trouver où diviser votre chaîne.

Imports System 

Class Test 
    Shared Sub Main() 

     Dim sample As String = "List1;List2; Field1,Field2" 

     Dim middle As Int32 = sample.LastIndexOf(";") 

     Dim lists As String = sample.Substring(0, middle).Trim() 
     Dim fields As String = sample.Substring(middle + 1).Trim() 

     Dim affectedLists As String() = lists.Split(";"C) 
     Dim affectedFields As String() = fields.Split(","C) 

    End Sub 
End Class 
+0

Merci beaucoup à tous. Je ne pouvais pas croire à quelle vitesse j'ai eu une réponse. –

Questions connexes