Wyrażenia regularne to uniwersalne narzędzie w skrzynce narzędziowej każdego programisty. Jednym z miejsc, w których mogą one być przydatne, są okna dialogowe Quick Find i Quick Replace w Visual Studio. W tym poście pokażę, jak wykorzystać możliwości wyrażeń regularnych w inteligentnej refaktoryzacji.
Zmiana enum na string
Załóżmy, że chciałbym zmienić enum na ciąg znaków w mojej aplikacji, ponieważ zdałem sobie sprawę, że ta właściwość może zawierać wartość, którą użytkownik dodał ręcznie i nie można jej wstępnie zdefiniować. Rzućmy okiem na ten enum:
public enum EventType { Unknown = 0, Concert = 1, Movie = 2 }
Teraz spróbujmy znaleźć wszystkie zastosowania tego enuma. Do tego zadania używam Quick Find w programie Visual Studio, Ctrl + F.
Czy zauważyłeś niebieski prostokąt w oknie dialogowym Quick Find? Jest to opcja wyszukiwania za pomocą wyrażenia regularnego. Włączmy to i przejdźmy do okna dialogowego Quick Replace. Możesz to zrobić za pomocą przełącznika po lewej stronie lub skrótu Ctrl + H.
Wpisałem wyrażenie EventType\.(\w+)
, które oznacza że szukam czegoś, co zaczyna się od EventType
, później następuje zwyczajna kropka, którą muszę poprzedzić \
. Następnie nawiasy, ktore oznaczają, że rozliczynam podgrupę, a /w+
oznacza dowolną literę jeden lub więcej razy. Zamienię to na "$1"
, czyli standardowe cudzyslowy oraz $1
, który jest oznaczeniem pierwszej grupy.
Rezultat jest całkiem niezły:
Możemy nieco dopracować to wyrażenie i dodać nazwę grupy.
Zamieniając (\w+)
na (?<entryType>\w+)
nadaję nazwę rezultatom tej grupy, której możemy użyć w Quick Replace.
Podsumowanie
Tworzenie wyrażeń regularnych to proces prób i błędów, w którym trzeba dopracować wyrażenie kilka razy, aż będzie pasowało do tego co potrzebujemy. Rezultaty mogą jednk przerosnąć nasze oczekiwania i przy takiej ręcznej pracy można zaoszczędzić dużo czasu.
Mam nadzieję, że nauczyłeś się dziś czegoś nowego, a jeśli tak, to ten dzień na pewno będzie spoko! 💗
Pingback: Refaktoryzacja przy pomocy refleksji – Michał Białecki Blog