2009-08-30 13 views
2

Comment supprimer toute ponctuation d'une chaîne dans vb.net? Je ne veux vraiment pas faire stringname.Replace("$", "") pour chaque bit de ponctuation, même si cela fonctionnerait.Supprimer toute ponctuation d'une chaîne dans VB.net

Comment procéder rapidement et efficacement?

autres que de coder quelque chose que les codes pour moi ....

Répondre

5

Vous pouvez utiliser une expression régulière pour correspondre à tout ce que vous voulez supprimer:

str = Regex.Replace(str, "[^A-Za-z]+", String.Empty); 

[^...] est un ensemble négatif qui correspond à tout caractère pas dans l'ensemble. Vous pouvez simplement y mettre n'importe quel personnage que vous voulez garder.

+2

J'utiliserais un match positif, pas un match négatif, perso nalement. – FlySwat

+0

Il est dit Regex était non déclaré – Cyclone

+0

Vous aurez besoin d'utiliser Imports System.Text.RegularExpressions – FlySwat

3

exemple rapide à l'aide d'un match de regex positif. Il suffit de placer les caractères que vous souhaitez supprimer en elle:

  Imports System.Text.RegularExpressions 
      Dim foo As String = "The, Quick brown fox. Jumped over the Lazy Dog!" 
      Console.WriteLine(Regex.Replace(foo,"[!,.\"'?]+", String.Empty)) 
+3

J'utiliserais une correspondance négative, pas une correspondance positive, personnellement. :) – Guffa

+0

Cela a fonctionné! Je pense que j'ai besoin d'échapper à mon "avec" "si, donc je l'ai fait Je peux simplement ajouter plus de caractères dans les parenthèses droite? Comment puis-je dépouiller les supports alors? – Cyclone

+0

Échapper avec un \ en C#, je ne sais pas à propos de VB – FlySwat

0

Si vous voulez une solution non-regex, vous pouvez essayer quelque chose comme ceci:

Dim stringname As String = "^^^%%This,,,... is $$my** original((((stri____ng." 

Dim sb As New StringBuilder 
Dim c As Char 

For Each c In stringname 
    If Not (Char.IsSymbol(c) OrElse Char.IsPunctuation(c)) Then 
     sb.Append(c) 
    End If 
Next 

Console.WriteLine(sb.ToString) 

sortie est "This is my original string".