Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

sevgin0954 avatar sevgin0954 557 Точки

C# Regex проблем

Даден е текст. Напишете програма, която променя регистъра на буквите до главни на всички места в текста, заградени с таговете <upcase> и </upcase>. Таговете не могат да бъдат вложени.

Пример:

We are living in a <upcase>yellow submarine</upcase>. We don't have <upcase>anything</upcase> else.

Резултат:

We are living in a YELLOW SUBMARINE. We don't have ANYTHING else.

Тагове:
0
Programming Fundamentals 03/06/2017 21:13:43
ppbaev avatar ppbaev 157 Точки
Best Answer

        string text = Console.ReadLine();
        Regex regex = new Regex(@"<upcase>(.*?)</upcase>");
        Console.WriteLine(regex.Replace(text, m => m.Groups[1].ToString().ToUpper()));

1
sevgin0954 avatar sevgin0954 557 Точки

А може ли да ми обесниш какво точно са  m  и  => и какво правят

0
03/06/2017 22:05:58
ppbaev avatar ppbaev 157 Точки

Ако не знаеш какво е, мога да те насоча към лекции от типа функционално програмиране, LINQ в C#, трябва да ги има в курсовете Advanced C#.

 

Иначе най-просто това е ламбда израз, в лявата страна стои променлива/и, в случая m, после има =>, което си е просто стрелка, отдясно - какво действие искаме да извършим с променливатата. Ако задържиш мишката върху m във Visual studio, ще ти каже, че m e от тип Match, това е резултата от мачването на регекса. Можем да извикаме всеки метод върху тоя Match, който връща накрая string, защото на метода Replace му трябва някакъв string, с който да заменя. Цялото нещо е съкратен запис на метод, който се вика всеки път щом се намери match и текущия match се подава като стойност в променливата m. Това се прави с делегат, ама това за друг път си го остави.

 

същия код без ламбдата, а с метод - https://pastebin.com/X4RxeX3S

1
03/06/2017 22:58:08
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.