2010-03-23 7 views
0

Je me demande où commencer à effectuer les opérations suivantes remplacer dans regex:Regex Remplacer Entre Citations

  1. fichier Lire (fichier .cs)
  2. Remplacer tout entre les cours ("e.g:") avec sa version majuscule ("E.G:")

Par exemple:

string m = "stringishere"; 

Devient

string m = "STRINGISHERE"; 

Merci à l'avance,

Kyle

Répondre

2

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. :)

+0

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. –

0

En supposant que votre chaîne n'ont pas " l'intérieur.

Regex r = new Regex('"[^"]+"'); 
string output = r.Replace(input,m=>m.Groups[0].ToUpper()); 
2

Depuis un fichier .cs peut contenir des commentaires comme

// Look, lonely double quote: " Take that, Regex parser! 

ce que vous demandez sera très difficile à faire avec Regex.