2009-03-30 6 views
5

Je veux diviser une chaîne en C# qui ressemble àÉclate une chaîne basée sur regexp

a: b: "c: d"

de sorte que le réseau résultant aura

Array [0 ] = "a"

Array [1] = "b"

Array [2] = "c: d"

ce regexp dois-je utiliser pour atteindre le résultat requis.

Merci beaucoup

Répondre

4

Si le colon delimiter est séparé par un espace, vous pouvez utiliser \ s pour correspondre les espaces blancs:

string example = "a : b : \"c:d\""; 
string[] splits = Regex.Split(example, @"\s:\s"); 
+0

Oups, je suppose que cette scission gardera les citations autour de "c: d" ... –

+0

Merci Andy, ça aide beaucoup. –

1

Cela semble fonctionner dans RegexBuddy pour moi

(\w+)\s:\s(\w+)\s:\s"(\w+:\w+)"

entrée

a: b: "c: d"

apparié groupes

  1. un
  2. b
  3. c: d

Comme toujours être prudent et comprendre ce que l'expression rationnelle ne fait. Ne pas simplement copier à l'aveuglette. Ceci correspond aux caractères des mots \w, espaces \s, etc. Pensez aux données que votre entrée aura réellement dedans!

+0

Grand, maintenant il a * deux problèmes *, p –

+0

je suis arrivé 99 problèmes mais une ain regex Ton. –

+0

Je pense qu'il devrait y avoir une solution plus large avec | ..smth comme: (\ w +) \ s: |: \ s "(\ w +: \ w +)" ..ou sorte de cela – 0x49D1

Questions connexes