2016-12-06 1 views
-1

Comment supprimer les caractères d'espaces de la chaîne d'entrée? Je suis en utilisant le code suivant quiSuppression des espaces blancs optionnels lors de la division avec les opérateurs mathématiques tout en les conservant dans le résultat

Dim input As String = txtInput.Text 
    Dim symbol As String = "([-+*/])" 


    Dim substrings() As String = Regex.Split(input, symbol) 
    Dim cleaned As String = Regex.Replace(input, "\s", " ") 
    For Each match As String In substrings 
     lstOutput.Items.Add(match) 
    Next 

Entrée: z + x

Sortie: z, + et x. Je veux me débarrasser de l'espace dans le dernier élément.

+1

Ne serait-il plus simple de [Split] (https: // msdn. microsoft.com/en-us/library/ms131448(v=vs.110).aspx) l'entrée sur l'espace? – Sehnsucht

+0

@Sehnsucht: Non, vous ne pouvez pas diviser avec de l'espace car l'espace est facultatif des deux côtés des opérateurs. Voir [my] (http://regexstorm.net/tester?p=%5cs*%28%5b-%2b*%2f%5d%29%5cs*&i=z+%2b+x-+d) (rendements 'z',' + ',' x', '-',' d') et [votre] (http://regexstorm.net/tester?p=+&i=z+%2b+x-+d) (donne les solutions 'z',' + ',' x-',' d'). –

Répondre

0

Vous pouvez enlever les espaces blancs redondants, tout en partageant avec

\s*([-+*/])\s* 

Voir la regex demo. Aussi, c'est une bonne idée de couper l'entrée avant de passer à la méthode regex replace avec .Trim().

Motif détails:

  • \s* - matchs 0+ espaces blancs (ceux-ci seront mis au rebut à partir du résultat car ils ne sont pas capturé)
  • ([-+*/]) - Groupe 1 (textes capturés seront émis à la matrice résultante) capturant 1 char: -, +, * ou /
  • \s* - matchs 0+ espaces blancs (ceux-ci seront mis au rebut à partir du résultat car ils ne sont pas capturés)

enter image description here

+0

Cela a fonctionné, mais qu'en est-il de \ s * - ibid pouvez-vous expliquer ce que cela signifie? est-ce pour la fermeture du premier \ s * ou est-ce juste pour s'appliquer à l'ensemble du groupe 1? –

+0

Je voulais dire "voir ci-dessus". Copié l'explication à la deuxième occurrence du sous-masque. –

+1

Merci Wiktor ... –