Top
Photo by Brett Jordan on Unsplash

Zastępowanie znaków specjalnych w Power Automate


Czy kiedykolwiek miałeś z tym do czynienia? System, który akceptuje tylko znaki międzynarodowe, podczas gdy użytkownicy wprowadzają lokalne, takie jak polskie? A może hiszpańskie? Cóż, Power Automate może pomóc w ich zamianie!

Można tego dokonać za pomocą zaledwie dwóch kroków, chociaż samo zastępowanie może być niewydajne przy obsłudze naprawdę długich tekstów. Ja używam go do zastępowania krótkich ciągów znaków, takich jak tytuły czy nazwy produktów. Jeśli planujesz użyć go do długiego tekstu, po prostu obserwuj, ile czasu będzie potrzebować.

Special characters replacement Power Automate flow

Macierz znaków specjalnych

Pierwszą rzeczą jest utworzenie macierzy znaków specjalnych. Będzie potrzebna, aby zamienić dowolny znak na coś innego lub na nic. Zrób to za pomocą obiektu JSON i akcji „Compose”. W moim przykładzie znajdziesz wszystkie polskie znaki specjalne:

{
"ą": "a",
"Ą": "A",
"ę": "e",
"Ę": "E",
"ć": "c",
"Ć": "C",
"ł": "l",
"Ł": "L",
"ó": "o",
"Ó": "O",
"ś": "s",
"Ś": "S",
"ź": "z",
"Ź": "Z",
"ż": "z",
"Ż": "Z",
"ń": "n",
"Ń": "N"
}

Zamiana znaków

Następnie musisz użyć akcji „Select”, aby uzyskać zakres każdego pojedynczego znaku, a następnie iterować przez nie i sprawdzić ich obecność w macierzy znaków specjalnych:

Use Select to replace characters
range(0, length({TEXT TO CHANGE}))

Wyrażenie „Range” zwraca tablicę liczb całkowitych wskazujących początek każdego znaku w ciągu znaków. Następnie użyj poniższego wyrażenia dla pola „Map”:

if(not(empty(outputs('Replacement_matrix')?[substring({TEXT TO CHANGE}, item(), 1)])), outputs('Replacement_matrix')[substring({TEXT TO CHANGE}, item(), 1)], substring({TEXT TO CHANGE}, item(), 1))

Część „Map” akcji przeszukuje każdy niepusty znak w ciągu znaków, który zaczyna się od wartości z tablicy ciągów znaków i ma długość 1 i sprawdza jego obecność w macierzy znaków specjalnych. Jeśli jest obecny – zostaje zastąpiony.

Wynik

To, co zwraca akcja „Select”, to tablica każdego pojedynczego znaku z ciągu wejściowego. Ostatecznym krokiem jest po prostu połączenie tablicy w ciąg. Użyj ponownie akcji „Compose” i następującego wyrażenia:

join(body('Replace_characters'), '')

Zobaczmy to w akcji

Najpierw przekazałem krótki ciąg znaków: „Zażółć gęślą jaźń„, aby przetestować rozwiązanie. Cały proces trwał około 100 ms:

Result of flow.

Następnie użyłem chatGPT, aby wygenerował mi tekst przy użyciu następującego zapytania: „Generate one paragraph having 20 sentences each having at least 10 words of random text in Polish.„. Wynik był dość długi:

Random Polish text generated by chatGPT.

Proces potrzebował około 200 ms, aby się zakończyć. Poprosiłem chatGPT, aby napisał mi powieść o Warszawie, która ma co najmniej 500 słów. Nie trzeba mówić, że to całkiem sporo tekstu 🙂 Niemniej jednak czas potrzebny do zakończenia akcji był naprawdę krótki: około 330 ms!

Daj mi znać, jak używasz tego rozwiązania i ile czasu potrzebuje w określonych przypadkach.


Tomasz Poszytek

Cześć! Nazywam się Tomasz. Jestem ekspertem w dziedzinie automatyzacji procesów i budowaniu rozwiązań dla biznesu z użyciem Power Platform. Jestem Microsoft MVP i Nintex vTE.

Brak komentarzy

Wyślij komentarz

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.