sobota, 9 stycznia 2021

Dodanie tekstu z przodu i tyłu ciągu znakowego / wartości liczbowej w Notepad++, PowerShell i Excel

Co robicie gdy macie potrzebę dodania do listy gotowych ciągów znaków (lub liczb) jakiegoś tekstu na początku i końcu? Dla przykładu chcielibyście z przodu tekstu dodać słowo "przód", a tyłu słowo "tył" (prawda, że jestem kreatywny? ;D) 

Ciąg znaków posiadany i oczekiwany
Macie Chcecie uzyskać
  • TEKST1111
  • TEKST2222
  • TEKST3333
  • TEKST4444
  • przód-TEKST1111-tył
  • przód-TEKST2222-tył
  • przód-TEKST3333-tył
  • przód-TEKST4444-tył

Pewnie jest wiele sposobów na wykonanie tego zadania, ale jeżeli akurat żaden z nich nie przychodzi Wam do głowy, to może któryś z poniższych Was poratuje.

Tekst jest napisany pobieżnie bardziej jako wskazówka, niż dokładny instruktaż. 

Notepad++

Na początek oprogramowanie darmowe jakim jest Notepad++.

Wklejacie posiadany tekst do okna edytora i uruchamiacie funkcję SzukajZastąp (skrót klawiaturowy Ctrl + H).
Następnie należy wprowadzić wyrażenie regularne jak poniżej:
  • Szukany tekst: ^(.+)$
  • Zamień na: przód-$1-tył
I nacisnąć przycisk Zamień wszystkie.

A w realu powinno to wyglądać jak na poniższym gifie.
Dodawanie tekstu przy pomocy wyrażeń regularnych w Notepad++
Dodawanie tekstu przy pomocy wyrażeń regularnych w Notepad++
Proszę zwrócić uwagę, że w lewym dolnym rogu okna Zastąp, w sekcji Tryb szukania zaznaczona jest opcja Wyrażenia regularne

PowerShell

A teraz mój ulubieniec ostatnich czasów, czyli PowerShell ;)

O ile w Notepad++ tekst wklejany był do edytora o tyle w PowerShellu należy go "wkleić" do zmiennej tablicowej, bądź "kolekcji" - bo tak to się powinno zwać w PowerShellu. 

Robi się to poniższym kodem:

$teksty = ("TEKST1111", "TEKST2222","TEKST3333","TEKST4444")

a następnie należy wydać polecenie, które doklei żądane przez nas wartości:

$teksty | foreach {write-host "przód-$_-tył"}

W realu ma to wyglądać jak poniżej.

Dodawanie tekstu do istniejących ciągów znakowych w PowerShellu
Dodawanie tekstu do istniejących ciągów znakowych w PowerShellu

Excel

No i na koniec program o którym chyba każdy pomyślał w celu wykonania dzisiejszego problemu :)

No więc będzie i Excel. 

Teksty do przerobienia wklejamy w kolumnę np. A, zaś w kolumnie B podajemy jedną z poniższych formuł. Teoretycznie są one równoważne, chociaż wydaje mi się, że wersja z ampersandami jest odporna na wersje językowe Excela (bo w końcu nazwy formuł zmieniają się w zależności od wersji językowej Excela).

=ZŁĄCZ.TEKST("przód-";A1;"-tył")

=("przód-"&A1&"-tył")

Łączenie tekstów w Excelu
Łączenie tekstów w Excelu

Na powyższej animacji widać, że pomimo zastosowania różnych formuł, wynik w kolumnie B się nie zmienia. Obydwie pozwalają na osiągnięcie tego samego rezultatu. 

Podsumowanie

Mam nadzieję, że komuś się powyższy tekst przyda. 

Owszem, przy 4 tekstach do przerobienia, to żaden z powyższych sposobów nie będzie "wart zachodu". Ale jeżeli tekstów jest 20, 50, a może i więcej, to warto zaoszczędzić sobie nerwów i skorzystać z któregoś z nich.

Jeżeli będziecie mieli jakieś zadania z którymi nie będziecie mogli sobie poradzić to możecie skontaktować się ze mną poprzez formularz kontaktowy z prawej strony bloga. 
Jeżeli znajdę czas (bardzo z nim krucho), to chętnie pomogę, ale przyznam szczerze, że preferuję wykonywanie powyższych zadań w kolejności Powershell, Notepad++, Excel.

1 komentarz:

  1. Wyrażenia regularne rules!! Poza tym moim zdaniem otwieranie wielo-MB pliku i jego edycja będzie najszybsza w Notepad++. Co do Powershella ot ja po prostu przyzwyczaiłem się do Sh/Bash/Ksh/Perl/Python i wolę to tam zrobić, bo do z tym PS jakoś nie mogę się przeprosić.
    Ale trzeba też przyznać, że edytor VSCode to Microsoftowi wyszedł i jest po prostu przekozak.

    OdpowiedzUsuń

Bardzo proszę o zachowanie netykiety.