web-dev-qa-db-fra.com

Comment remplacer tous les caractères spéciaux dans une chaîne à l'aide de C #

Je voudrais remplacer tous les caractères spéciaux dans une chaîne avec un comma (,).

Par exemple:

Hello@Hello&Hello(Hello)

le résultat -

Hello,Hello,Hello,Hello,

(Je ne sais pas comment utiliser regexp en C #)

Puis-je faire ce travail en utilisant regexp en C #?

28
user3233403

Oui, vous pouvez utiliser regular expressions en C #.

Using regular expressions with C# :

using System.Text.RegularExpressions;

string your_String = "Hello@Hello&Hello(Hello)";
string my_String =  Regex.Replace(your_String, @"[^0-9a-zA-Z]+", ",");
56
Ishan Jain

Supposons que vous souhaitiez remplacer des symboles qui ne sont ni des chiffres ni des lettres (et le caractère _ en tant que @Guffa correctement pointé):

string input = "Hello@Hello&Hello(Hello)";
string result = Regex.Replace(input, @"[^\w\d]", ",");
// Hello,Hello,Hello,Hello,

Vous pouvez ajouter d'autres symboles qui ne doivent pas être remplacés. Par exemple. si vous voulez que les symboles d’espace blanc restent, ajoutez simplement \s au motif: \[^\w\d\s]

10
Sergey Berezovskiy

Vous pouvez utiliser une expression régulière pour remplacer, par exemple, tous les caractères non alphanumériques par des virgules:

s = Regex.Replace(s, "[^0-9A-Za-z]+", ",");

Noter la + après le jeu fera remplacer chaque groupe de caractères non alphanumériques par une virgule. Si vous souhaitez remplacer chaque caractère par une virgule, supprimez simplement le +.

8
Guffa

En outre, cela peut être fait avec LINQ

var str = "Hello@Hello&Hello(Hello)";
var characters = str.Select(c => char.IsLetter(c) ? c : ',')).ToArray();             
var output = new string(characters);
Console.WriteLine(output);
3
Selman Genç