• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

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

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
237 wizyt
pytanie zadane 25 marca 2017 w C# przez shuetam Nowicjusz (240 p.)

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

 

1 odpowiedź

0 głosów
odpowiedź 27 marca 2017 przez egoon Obywatel (1,360 p.)

Witam

tak na szybko - masz pętlę

 foreach (Match v in matches)
            {
              
                Console.WriteLine(v);
            }

 

może by w niej, zamiast wypisywać wyniki, powiększyć litery? A już powiększone wpisać w jeden ciąg? I dopiero to wyświetlić.

 

komentarz 27 marca 2017 przez shuetam Nowicjusz (240 p.)
Dzięki za odpowiedź, samo powiększenie liter ok, ale chodzi o to jak teraz za pomocą funkcji Regex.Replace() zamienić dopasowania na te powiększone litery? Przepatrzyłem różne przykłady zastosowania tej funkcji i chyba jednak nie jest to możliwe bo ona w miejsce dopasowań wstawiać może tylko pewnego określonego stringa, albo kopie dopasowania lub ciąg znaków stojący za lub przed dopasowaniem i nie da się na tych "zastępnikach" wykonywać żadnych  funkcji  (jak na przykład ToUpper()) - chociaz moze są jakieś sposoby ale nic do tej pory nie znalazłem
komentarz 28 marca 2017 przez egoon Obywatel (1,360 p.)
komentarz 31 marca 2017 przez shuetam Nowicjusz (240 p.)
Dzięki właśnie o coś takiego chodziło, na msdn jest jednak wszystko co potrzeba :) Dzięki wielkie!

Podobne pytania

0 głosów
1 odpowiedź 207 wizyt
pytanie zadane 7 stycznia 2019 w Python przez Frezen Obywatel (1,330 p.)
0 głosów
1 odpowiedź 1,062 wizyt
+1 głos
1 odpowiedź 275 wizyt

93,194 zapytań

142,208 odpowiedzi

322,051 komentarzy

62,518 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 3053p. - dia-Chann
  2. 2998p. - Łukasz Piwowar
  3. 2993p. - Łukasz Eckert
  4. 2970p. - CC PL
  5. 2930p. - Tomasz Bielak
  6. 2907p. - Łukasz Siedlecki
  7. 2890p. - rucin93
  8. 2801p. - Adrian Wieprzkowicz
  9. 2752p. - Mikbac
  10. 2485p. - Marcin Putra
  11. 2461p. - Michał Telesz
  12. 2418p. - Michal Drewniak
  13. 2371p. - Anonim 3619784
  14. 1733p. - rafalszastok
  15. 1650p. - Mariusz Fornal
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...