Il est pas indiqué dans votre question donc je vais fournir une solution possible pour les citations d'une seule ligne:
public static void Main(string[] args)
{
const string MatchQuotedExp = @"(\x22|\x27)((?!\1).|\1{2})*\1";
Regex regex = new Regex(MatchQuotedExp);
string input = @"""Foo"" Bar ""Foo"" Bar ""Foo""!
""Bar"" Foo ""Bar"" Foo ""Bar""!";
foreach (Match match in regex.Matches(input))
{
input = Regex.Replace(
input,
match.Value,
match.Value.ToUpperInvariant());
}
Console.WriteLine(input);
}
Pour le support de cotation sur plusieurs lignes ajouter RegexOptions.Singleline
lors de la création du regex
.
Avec le soutien de plusieurs lignes, l'entrée:
// "Foo" Bar "Foo" Bar "Foo"!
// "Bar" Foo "Bar" Foo "Bar"! "Multi
// line" blah
sera converti en:
// "FOO" Bar "FOO" Bar "FOO"!
// "BAR" Foo "BAR" Foo "BAR"! "MULTI
// LINE" blah
Notez également que cela va exploser si TOUT des citations contiennent un nombre impair de "
à l'intérieur. :)
Merci, j'ai changé des pièces car j'ai oublié quelque chose de critique, mais cela m'a arrangé pour ce dont j'avais besoin. Will +1 dès que j'ai des votes. –