Strona 1 z 1

Zastąpienie znaków niedrukowanych"Enter"

PostNapisane: Wt kwi 03, 2018 3:11 pm
przez Jaceno
Witam

Potrzebuję pozbyć się z tekstu znaków niedrukowanych Enter innym znakiem. Szukałem, ale większość wskazówek na ten temat dotyczy innych edytorów tekstu, których nie posiadam.

Podam przykład. Tekst wygląda tak:

Przykładowy tekst

Przykładowy tekst
Przykładowy tekst


A chce by wyglądał tak:

Przykłądowy tekst|Przykładowy tekst|Przykładowy tekst


Enter ma być zastąpiony znakiem ,,|"

Proszę o pomoc i z góry dziękuję.

Re: Zastąpienie znaków niedrukowanych"Enter"

PostNapisane: Wt kwi 03, 2018 9:43 pm
przez Jan_J
We Writerze, operacja Znajdź i zamień przy włączonym w opcjach (dostępnych w tym samym oknie dialogowym) użyciu wyrażeń regularnych; w polu Znajdź:
symbol końca akapitu (Enter) kodowany jest jako $
symbol końca wiersza (Shift+Enter) kodowany jest jako \n
Wobec tego zamiana Enterów na | jest bezproblemowa.

Re: Zastąpienie znaków niedrukowanych"Enter"

PostNapisane: Śr kwi 04, 2018 9:32 am
przez Jaceno
Działa, dziękuję Ci bardzo za pomoc.

Mam jeszcze jedno pytanie, mianowicie muszę w ten sposób wyedytować sporą ilość różnych dokumentów do tego pozbyć się pozostałości htmla np: </b> <b> zamienić na spację. Pomyślałem o stworzeniu makra, ale za bardzo sobie z tym nie radzę.
Mogę prosić o jakąś formułę na "Znajdź i zastąp" ?

Pozdrawiam

Re: Zastąpienie znaków niedrukowanych"Enter"

PostNapisane: Śr kwi 04, 2018 1:35 pm
przez Jan_J
Jaceno napisał(a):[...], mianowicie muszę w ten sposób wyedytować sporą ilość różnych dokumentów do tego pozbyć się pozostałości htmla np: </b> <b> zamienić na spację. [...]
Writer nieszczegónie się do tego nadaje. Ale same wyrażenia regularne jak najbardziej, więc także użycie formularza Znajdź i Zamień da radę, choć być może wielokrotnie.

Ja bym raczej nie wklejał tekstu od razu do Writera. Kod HTML jest zapisem tekstowym, zapisałbym go w pliku tekstowym i poddał obróbce wyrażeniami regularnymi, a wynik wczytał albo wkleił do Writera.
Taka obróbka mogłaby wykorzystywać program lub język radzący sobie z wyrażeniami tego typu. Klasyka: awk, perl, sed, ew. bardziej współczesny Python. Python jest dostępny w ramach Open/LibreOffice, da się też zastosować w makrze.
Bliżej użytkownika byłyby edytory z obsługą wyrażeń regularnych. Writer oczywiście, ale do nieformatowanych tekstów bardziej nadawałby się Notepad++.

Znaczniki xml-owe są w 3 rodzajach:
otwierający <x> albo <x a="p" c="q">
zamykający </x> (zawsze bez dodatkowych treści -- atrybutów)
pusty <x /> albo <x a="p" c="q" />
Wszystkie "pasują" do wyrażenia regularnego <[^>]*>
które opisuje frazy ograniczone nawiasami <...>, wewnątrz których nie ma symbolu >
Z zastrzeżeniem: będzie to działać OK, o ile cały znacznik znajduje się w pojedynczym wierszu. Bo np. znacznik
Kod: Zaznacz cały   Rozszerz widokZwiń widok
<p
id="a1"
class="summary"
>

jest legalny, ale rozciąga się na 4 wiersze i skanery wyrażeń regularnych (oprócz Perlowego) go nie obejmą, gdyż działają w obrębie wiersza (we Writerze: bloku akapitowego).

Natomiast elementy znakowania xml są w 2 rodzajach:
niepusty, postaci <x>bla bla bla</x> albo <x a="p" c="q">bla bla bla</x>
i pusty, składający się tylko z pustego znacznika jak wyżej.

Gdyby taki element mieścił się w jednym wierszu / akapicie, to (przy pewnych uproszczeniach) opisujący go wzorzec wyglądałby tak:
Kod: Zaznacz cały   Rozszerz widokZwiń widok
<([^ >]+)[^>]*>.*?</\1 *>

We Writerze nie da się go łatwo zastosować, jako że odwołanie do podwyrażenia, czyli \1, nie jest zaimplementowane we frazie "znajdź". Tym niemniej gdyby poszukiwać samych znaczników b, to wzorzec
Kod: Zaznacz cały   Rozszerz widokZwiń widok
<b[^>]*>.*?</b *>

da radę.

Więcej o wyrażeniach regularnych, np. https://pl.wikipedia.org/wiki/Wyra%C5%BCenie_regularne. Zalecam pominięcie rozdziału dot. teorii.



Wyrażenia regularne + makro w Basicu dla Calca, patrz np. https://forum.openoffice.org/en/forum/v ... 45&t=72048