246 votes

String.Replace en ignorant la casse

J'ai une chaîne appelée "hello world" Je dois remplacer le mot "world" par "csharp" pour cela, j'utilise:

 string.Replace("World", "csharp");
 

mais en conséquence, je ne fais pas remplacer la chaîne. La raison est la sensibilité à la casse. La chaîne d'origine contient "world" alors que j'essaie de remplacer "World".

Existe-t-il un moyen d'éviter cette sensibilité à la casse dans la méthode string.Replace?

Merci.

347voto

Darin Dimitrov Points 528142

Vous pouvez utiliser un regex et effectuer un remplacement insensible à la casse:

 class Program
{
    static void Main()
    {
        string input = "hello WoRlD";
        string result = 
           Regex.Replace(input, "world", "csharp", RegexOptions.IgnoreCase);
        Console.WriteLine(result); // prints "hello csharp"
    }
}
 

130voto

Steve B Points 20427
 var search = "world";
var replacement = "csharp";
string result = Regex.Replace(
    stringToLookInto,
    Regex.Escape(search), 
    Regex.Escape(replacement), 
    RegexOptions.IgnoreCase
);
 

Regex.Escape est utile si vous comptez sur une entrée utilisateur pouvant contenir des éléments de langage Regex

30voto

Petrucio Points 1613

Les extensions nous facilitent la vie:

 static public class StringExtensions
{
    static public string ReplaceInsensitive(this string str, string from, string to)
    {
        str = Regex.Replace(str, from, to, RegexOptions.IgnoreCase);
        return str;
    }
}
 

5voto

Nick Points 2279

( Edité: n'était pas au courant du problème du "lien nu", désolé pour ça)

Tiré d' ici :

 string myString = "find Me and replace ME";
string strReplace = "me";
myString = Regex.Replace(myString, "me", strReplace, RegexOptions.IgnoreCase);
 

On dirait que vous n'êtes pas le premier à se plaindre de l'absence de chaîne insensible à la casse. Remplacez.

0voto

zenwalker Points 1433

Désolé j'ai édité le post ici. Nouvel utilisateur ici.

Mais bon, la méthode de remplacement ne prend pas 3 paramètres. Donc, comme certains corps l'ont dit, nous devons utiliser l'API regex.replace

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X