Zastąpienie znaków niedrukowanych"Enter"

Nie wiesz, gdzie umieścić swój post? Pisz tutaj!
Jaceno
Posty: 2
Rejestracja: wt kwie 03, 2018 2:57 pm

Zastąpienie znaków niedrukowanych"Enter"

Post autor: 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ę.
OpenOffice 4.1.5 na Windows 7
Jan_J
Posty: 4558
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

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

Post autor: 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.
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Jaceno
Posty: 2
Rejestracja: wt kwie 03, 2018 2:57 pm

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

Post autor: 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
OpenOffice 4.1.5 na Windows 7
Jan_J
Posty: 4558
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

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

Post autor: Jan_J »

Jaceno pisze:[...], 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

<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

<([^ >]+)[^>]*>.*?</\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

<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
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
ODPOWIEDZ