2009-11-22 7 views
2

Je voudrais trouver tous les caractères spéciaux dans une chaîne et le remplacer par un Hyphen (-)Remplacer tous les caractères spéciaux dans une chaîne en C#

J'utilise le code ci-dessous

string content = "foo,bar,(regular expression replace) 123";  
string pattern = "[^a-zA-Z]"; //regex pattern 
string result = System.Text.RegularExpressions.Regex.Replace(content,pattern, "-"); 

OutPut

foo-bar - expression régulière remplacer ----

Je reçois plusieurs occurrences de trait d'union (---) dans la sortie.

Je voudrais obtenir quelque chose comme ça

foo-bar-expression régulière remplacer

Comment puis-je obtenir ce

Toute aide serait appréciée

Merci Deepu

Répondre

9

Essayez le modèle: "[^a-zA-Z]+" - c'est-à-dire remplacez un ou plusieurs non-alpha (vous pouvez autoriser les chiffres, par contre?).

+0

Merci Marc Cela fonctionne, mais se termine par (-) – Deepu

1

Cela ne fonctionnerait-il pas?

string pattern = "[^a-zA-Z]+"; 
11

pourquoi ne pas simplement faire ceci:

public static string ToSlug(this string text) 
     { 
      StringBuilder sb = new StringBuilder(); 
      var lastWasInvalid = false; 
      foreach (char c in text) 
      { 
       if (char.IsLetterOrDigit(c)) 
       { 
        sb.Append(c); 
        lastWasInvalid = false; 
       } 
       else 
       { 
        if (!lastWasInvalid) 
         sb.Append("-"); 
        lastWasInvalid = true; 
       } 
      } 

      return sb.ToString().ToLowerInvariant().Trim(); 

     } 
+0

Impressionnant !!!! C'est ce que je cherchais grâce à Richard. – Deepu