2009-07-16 11 views
21

Je sais exactement zilch à propos des expressions régulières et j'ai pensé que c'était une bonne occasion pour apprendre au moins les bases les plus basiques. Comment faire ce remplacement de chaîne insensible à la casse dans C# en utilisant une expression régulière?Comment faites-vous le remplacement de chaîne insensible à la casse en utilisant des expressions régulières?

myString.Replace("/kg", "").Replace("/KG", ""); 

(Notez que le '/' est un littéral.)

Répondre

60

Vous pouvez utiliser:

myString = Regex.Replace(myString, "/kg", "", RegexOptions.IgnoreCase); 

Si vous allez faire beaucoup de fois, vous pourriez faire :

// You can reuse this object 
Regex regex = new Regex("/kg", RegexOptions.IgnoreCase); 
myString = regex.Replace(myString, ""); 

L'utilisation (?i:/kg) ferait juste que peu d'un larg Par exemple, je préfère utiliser RegexOptions pour faire une option affecter le motif entier. MSDN a pretty reasonable documentation des expressions régulières .NET.

+0

Vous me battez pour ça! :) –

+0

Vous avez omis les deux points: (? I:/kg) –

+0

@Alan: Merci, résolu maintenant. –

0

Cela dépend de ce que vous voulez réaliser. Je suppose que vous voulez supprimer une séquence de caractères après une barre oblique?

string replaced = Regex.Replace(input,"/[a-zA-Z]+",""); 

ou

string replaced = Regex.Replace(input,"/[a-z]+","",RegexOptions.IgnoreCase); 
2

"/ [kK] [gG]" ou "(i:/kg)" correspondra pour vous. Déclare un nouvel objet regex, en passant l'un de ceux-ci en tant que votre contenu. Ensuite, exécutez regex.replace.

0
Regex regex = new Regex(@"/kg", RegexOptions.IgnoreCase); 
    regex.Replace(input, ""); 
+0

voir Jon Skeet ci-dessous, il a publié en premier –

+1

Pas besoin de @ quand il n'y a que des barres obliques * forward *. –

+0

ouais, j'ai utilisé nregex.com pour créer la première ligne de l'exemple. ils utilisent le @ quel que soit le motif –

4

Comme ceci:

myString = Regex.Replace(myString, "/[Kk][Gg]", String.Empty); 

Notez qu'il traitera également les combinaisons/kG et/kg, il fait plus que votre exemple de remplacement de chaîne.

Si vous voulez seulement gérer les combinaisons spécifiques/kg et/KG:

myString = Regex.Replace(myString, "/(?:kg|KG)", String.Empty); 
+0

Pourquoi la downvote? Si vous n'expliquez pas ce que vous pensez être faux, cela ne peut pas améliorer la réponse. – Guffa

0

Here est un exemple en utilisant la fonction Regex.Replace.

Questions connexes