2009-07-31 8 views
9

En utilisant VB.NET - J'ai une chaîne:Comment découper une chaîne en utilisant un séparateur multiple de caractères et de maintenir le séparateur

"##RES00012##Some value ##RES00034##Another value" 

que je veux partager en utilisant le "##RES" comme séparateur à:

"##RES00012## Some value" et "##RES00034## Another value"

la fonction string.split ne semble pas offrir une surcharge de diviser sur plusieurs caractères ou tableau de caractères et de maintenir la seperator, qui est nécessaire pour pur fonctionnel pose.

Je cherche simplement à rechercher indexOf("##res") et utiliser la manipulation de chaînes pour faire ceci à moins que je ne manque quelque chose d'évident? J'ai cherché SO pour une solution mais incapable de trouver quelque chose qui fait réellement ce que je suis après.

Ce qui suit est le plus proche que j'ai trouvé: how-do-i-split-a-string-by-a-multi-character-delimiter-in-c

Répondre

16

Fractionnement sur plusieurs caractères est pas difficile; il y a sur la méthode des surcharges String.Split qui fait cela:

Dim input As String = "##RES00012## Some value ##RES00034## Another value" 
Dim parts As String() = input.Split(New String() {"##RES"}, StringSplitOptions.RemoveEmptyEntries) 

Cela vous donnera un tableau avec deux éléments:

"00012## Some value " 
"00034## Another value" 

Cependant, le séparateur est laissé. Ce n'est pas trop compliqué cependant; il devrait être préfixé à chacun des éléments (à l'exception de la première si la chaîne ne démarre pas avec le séparateur):

Dim input As String = "##RES00012## Some value ##RES00034## Another value" 
Dim parts As String() = input.Split(New String() {"##RES"}, StringSplitOptions.RemoveEmptyEntries) 

For i As Integer = 0 To parts.Length - 1 
    If i > 0 OrElse input.StartsWith("##RES") = True Then 
     parts(i) = "##RES" & parts(i) 
    End If 
Next 
13

Cela fait beaucoup de gens de code supplémentaires ... Pourquoi ne pas simplement utiliser:

Dim inputs As String = "first value##second value##third value" 
Dim parts As String() = Strings.Split(inputs,"##") 
+0

Brillant! Solution très claire. –

+0

Où la classe "Strings" est-elle définie? –

Questions connexes