Quantcast
Channel: Forum Pasja Informatyki - Najnowsze pytania bez odpowiedzi
Viewing all articles
Browse latest Browse all 22005

Wyrażenia regularne C# - czy da się zmodyfikować kopie dopasowania wyrażenia regularnego?

$
0
0

Cześć,
postaram się na przykładzie jasno wyrazić w czym mam problem. Załóżmy, że przy pomocy wyrażenia regularnego chce zmodyfikować tekst tak aby powiększyć pierwsze litery wyrazów w zdaniu. Tworze wyrażenie ktore dopasowuje te pierwsze litery, następnie chciałby ich zmodyfikowaną kopię (powiększone)  wstawić za pomocą funkcji Replace. Czy jest to możliwe? Wstawiam kod, jak widać w kodzie w miejsce dopasowań wyrażenia regularnego wstawia się ich kopia (więc tekst się nie zmienia) ale jak zrobić aby na tych kopiach zadziałała funkcja ToUpper (w moim kodzie ona nie działa)?  Wiem, że ten konkretny przykład mozna rozwiązać inaczej na różne sposoby ale czy jest możliwość zrobić to w taki lub podobny sposób przy pomocy wyrażeń regularnych? Z góry dzieki za pomocy, mam nadzieje, ze w miare jasno napisalem o co chodzi :/

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

namespace ConsoleApplication15
{
    class Program
    {
        static void Main(string[] args)
        {
            string tekst = "Ministerstwo spraw zagranicznych rzeczypospolitej polskiej";

            string dopasowanie = @"\s+\w{1}";

            // przedstawienie znalezionych dopasowan
            MatchCollection matches = Regex.Matches(tekst, dopasowanie);

            foreach (Match v in matches)
            {

                Console.WriteLine(v);
            }

            string dopasowanieZmiana = "$&"; // kopia dopasowania

            Console.WriteLine(Regex.Replace(tekst, dopasowanie, dopasowanieZmiana.ToUpper())); // ToUpper nie dziala na kopii dopasowania

            Console.ReadKey();
        }
    }
}

 


Viewing all articles
Browse latest Browse all 22005

Latest Images