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();
}
}
}