2014-05-15 3 views
-1
trait d'union

-je avoir un nom complet en entrée et que vous voulez diviser le mot entier nom complet par mot, mais il se doit:Regex de Split chaîne hors

  1. Ne pas couper le mot si contient un exemple Hyphen REES-MOGG
  2. Si Diviser le mot si contient un Underscore
  3. par exemple
REES_MOGG

HYPHEN
Exemple:

MRS C REES-MOGG 

Résultat:

MRS 
C 
REES-MOGG 

UNDERSCORE
Exemple:

MRS C REES_MOGG 

Résultat:

MRS 
C 
REES 
MOGG 

Je suis actuellement en utilisant le code ci-dessous mais en vain:

Dim str As String() = Regex.Split(names, "\s+") 
+3

Et quelle langue/lib utilisez-vous? Et pourquoi ne pas souligner dans votre expression régulière si vous voulez diviser sur les traits de soulignement? –

+0

Simple remplacer '_' par' 'ne fait pas le travail? – hsz

+0

J'utilise VB.net – user3636465

Répondre

1

Juste divisé sur "\s+|_", qui se divisera sur les espaces, et également sur les traits de soulignement. Votre code serait:

Dim str As String() = **Regex.Split(names, "\s+|_")** 

Demo.

Pour à diviser le esperluette aussi, il suffit d'ajouter |\& à la chaîne:

Dim str As String() = **Regex.Split(names, "\s+|_|\&")** 

Demo.

+0

cool..il a travaillé .. Merci beaucoup – user3636465

+0

Aussi si je veux Ampersand '&' aussi en se divisant? – user3636465

+0

@ user3636465 J'ai ajouté des informations supplémentaires à la réponse pour diviser également sur les esperluettes. Si cette réponse résout votre problème, veuillez le marquer comme accepté via la coche à gauche de ma réponse. – Joeytje50

1

utiliser ceci:

Dim str As String() = Regex.Split(names, "[\s_]+") 
+3

Rappelez-vous que '(\ s | _)' est simplement '[\ s_] ' – Robin

0

Afin de rendre votre split script sur l'espace blanc et vous met en évidence besoin simplement d'ajouter un groupe de caractères [ ] autour du caractère blanc \s dans votre regex puis ajoutez les d'autres symboles que vous voulez cracher dans ce groupe.

Dim str As String() = Regex.Split(names, "[\s_]+") 
1
Dim str As String() = names.Split({" ", "_", "&", vbTab}, StringSplitOptions.RemoveEmptyEntries) 
0

Je ne sais pas beaucoup sur VB .NET, mais vous devez changer votre RegEx sûr.

Voici un exemple, bien que j'ai testé sur Javascript.

Dim matchForHyphen As MatchCollection = Regex.Matches("MRS C REES-MOGG","[\w]*[^_]*") 
Dim matchForUnderscore As MatchCollection = Regex.Match("MRS C REES_MOGG","[\w]*[^_]*") 

Ensuite, vous devez parcourir les objets Match pour obtenir les résultats. par ex. matchForHyphen [i] dans un cycle For.ou Pour chaque instruction

Espérons que ça aide