Jakiś czas temu pokazałem jak za pomocą krótkiego kodu w SQL usunąć wszystkie wielokrotne spacje w tekście i zastąpić je spacjami pojedynczymi.
Dziś króciutko ten sam trick w Powershell, w razie gdyby ktoś kiedyś potrzebował pozbyć się wielokrotnych spacji z tekstu w windowsowym skrypcie.
$tekst = "Ala ma kota i dwie wydry." $tekst.Replace(" ", "{}").Replace("}{", "").Replace("{}", " ")
Efekt?
Ala ma kota i dwie wydry.
Jak widać metoda działa identycznie. Najpierw zamieniamy każdą spację na {}, potem usuwamy każdą parę }{, na koniec zamieniamy pozostałe {} na pojedynczą spację.
Prawdę mówiąc sposób ten nie przestaje mnie zadziwiać. To jedna z tych rzeczy, które są proste algorytmicznie, krótkie w zapisie i działają uniwersalnie dla dowolnych tekstów.
A wyrażenia regularne to w tych ustrojstwach nie działają? 🙂
Działają, jak najbardziej. Można zrobić:
"Ala ma cośtam" -replace "\ {2,}",""
i zadziała bez pudła. Ale wtedy nie ma zabawy ?
To było napisać wyraźnie, że to dla zabawy, bo jakiś początkujący programista na tę poradę trafi i zacznie wyważać otwarte drzwi 😉
Napisałem, że bazuję na poprzednim wpisie, gdzie identyczną logikę zrobiłem w TSQL.
Wypróbowałem to u siebie i mi nie wyszło. Kot jest, ale nie wiem, co z wydrami…
Jakieś szczegóły? Co nie poszło? Jakiś komunikat błędu?