Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 22. 1. 2016 18:50:26

czsars
Člen
Registrace: 22. 1. 2016
Příspěvků: 53

Nahrazení textu mezi dvěma znaky - VYŘEŠENO

Zdravím vás, poradil byste mi někdo s tímto problémem? Mám CSV soubor produktů do eshopu a potřeboval bych nějaké hromadné úpravy v popisu produktu a to především odstranění všech hypertextových odkazů, podle mě stačí nahradit resp: odstranit text mezi dvěma znaky. Viz potřebuji tohle, odkaz má přesné znění

href="http://www.nejakadomena.cz/blabla/cokoliv jiného"

takže já potřebuji výsledek

href=""

zkrátka odstranit to mezi uvozovkami, zbytek už odstranit zvládnu.
Moc děkuji za vaše rady.Pavel

Editoval czsars (23. 1. 2016 13:27:45)

Offline

#2 22. 1. 2016 19:27:49

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,983

Re: Nahrazení textu mezi dvěma znaky - VYŘEŠENO

Tomu nějak nerozumím. Vy máte nějaký odkaz

href="http://www.nejakadomena.cz/blabla/cokoliv jiného"

- Nyní chcete odstranit obsah mezi uvozovkami takže zůstane

href=""

- Ale co mne udivuje proč uvádíte, že zbytek už odstranit zvládnete?
     Buď chcete zcela odstranit celý výraz z nějakého řetězce, nebo tam chcete vložit jiný obsah - tedy přesměrovat původní odkaz, ale i to by bylo zbytčně krkolomné. Takže něchápu co opravdu potřebujete. Nezlobte se, ale máme tady ověřeno, že podaný dotaz se nakonec zcela změní. Většinou autor nechce vysvětlit co opravdu potřebuje a uvede příklad, který pokládá za vhodný. To bývá průšvih a téměř vždy se to několikrát upřesní a je to o něčem úplně jiném.
     Hyperlinky bývají na samostatném řádku (buňce původní tabulky) a lze to načíst a bude to jen v určitém sloupci. Tam to stačí dohledat podle prefixu "href" a smazat zcela, nebo dát nahradit, popřípadě REPLACE část textu mezi uvozovkami. Ale opravdu popište problém tak aby to bylo logické a aby to mělo hlavu a patu.

Editoval neutr (22. 1. 2016 19:29:43)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 22. 1. 2016 19:48:31

czsars
Člen
Registrace: 22. 1. 2016
Příspěvků: 53

Re: Nahrazení textu mezi dvěma znaky - VYŘEŠENO

Dobrý den, děkuji za odpověď. Zkusím to trochu osvětlit. Jde o to, že v daném CSV souboru obsahují buňky kompletní popis produktu v eshopu. Eshop se nyní předělává a bude provozován na jiné doméně takže by odkazy nefungovaly a ten začátek hyperlinku tam chci nechat z důvodu, že jsou na správném místě v obsahu celého textu pro případ, že by byly nahrazeny novým odkazem ale pravděpodobně budou odstraněny úplně. Snad jsem to už napsal srozumitelně:-) Děkuji za ochotu.

neutr napsal(a)

Tomu nějak nerozumím. Vy máte nějaký odkaz

href="http://www.nejakadomena.cz/blabla/cokoliv jiného"

- Nyní chcete odstranit obsah mezi uvozovkami takže zůstane

href=""

- Ale co mne udivuje proč uvádíte, že zbytek už odstranit zvládnete?
     Buď chcete zcela odstranit celý výraz z nějakého řetězce, nebo tam chcete vložit jiný obsah - tedy přesměrovat původní odkaz, ale i to by bylo zbytčně krkolomné. Takže něchápu co opravdu potřebujete. Nezlobte se, ale máme tady ověřeno, že podaný dotaz se nakonec zcela změní. Většinou autor nechce vysvětlit co opravdu potřebuje a uvede příklad, který pokládá za vhodný. To bývá průšvih a téměř vždy se to několikrát upřesní a je to o něčem úplně jiném.
     Hyperlinky bývají na samostatném řádku (buňce původní tabulky) a lze to načíst a bude to jen v určitém sloupci. Tam to stačí dohledat podle prefixu "href" a smazat zcela, nebo dát nahradit, popřípadě REPLACE část textu mezi uvozovkami. Ale opravdu popište problém tak aby to bylo logické a aby to mělo hlavu a patu.

Offline

#4 22. 1. 2016 20:58:50

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 568

Re: Nahrazení textu mezi dvěma znaky - VYŘEŠENO

dal bych najít nahradit s povelením regulárních výrazů: najít ".*" nahradit za "" (akorát pozor s těmi uvozovkami je trochu potíž, z klávesnice lezou pokaždý trochu jiné, takže pokud to nefunguje to nakopírovat uvozovky z buňky pomocí ctrl+C/V). Určitě by šel vymyslet sofistikovanější způsob hledání třeba lp něco napíše.


Trochu lepší je hledat text mezi uvozovkami takto: "[^"]*" a nahradit za ""

Editoval ludviktrnka (22. 1. 2016 22:16:43)


LibreOffice 6.2.

Offline

#5 22. 1. 2016 21:12:17

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,983

Re: Nahrazení textu mezi dvěma znaky - VYŘEŠENO

To už smysl dává. Takže pokud rozumím správně, tak s vyhledáním odkazu uvnitř jiného řetězce nemáte a jde vám jen o to najít a smazat text mezi závorkami. Takže asi takto :
Z načtených buněk se vše kopíruje do jiných sloupců - nejlépe v jiném sešitě, ale to chce zkušenosti, proto to popíšu na stejném listu :
     Vymyslím si, že máte úseky 4 sloupce (A,B,C,D), které mohou něco obsahovat.
1. - Doporučuji vybrat celý sloupec "E" a ten obarvit kvůli orientaci.
2. - Do buňky F1 napíšete vzorec :
             

=IF(A1="";"";IF(LEFT(A1;4)= "href";"href"""";A1))

        Poznámka výraz "href"""" můžete nahradit "href" & CHAR(34)& CHAR(34) - nebo jen to "href" protože uvozovky nepotřebujete - jsou jen pro označení místa a může tam být cokoliv.
3. - Buňku F1 zkopírujete do sloupců vedle - konkrétně G1, H1, I1.
4. - Úsek F1:I1 dáte do paměti.
5. - Stisknete Ctrl + End (dostanete se například do buňky I125.
6. - Postavíte se do buňky F125 (kvůli tomu máte vybarvený sloupec).
7. - Stisknete Ctrl+Shift+šipka nahoru. Máte vybraný úsek F1:F125
8. - Vložíte pomocí Ctrl + V vzorce se vykopírují do úseku F1:I125
9. - Ihned při vybraném úseku zadáte Ctrl + C a bez dalšího dále z kontextového menu (pod pravým plačítkem) "Vložit jinak" - dialogem zadat jen čísla a text. = hotovo

Editoval neutr (22. 1. 2016 21:18:05)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#6 23. 1. 2016 13:26:38

czsars
Člen
Registrace: 22. 1. 2016
Příspěvků: 53

Re: Nahrazení textu mezi dvěma znaky - VYŘEŠENO

Chci vám oběma poděkovat, všechny nabízené řešení fungují. Díky moc!

Offline

#7 23. 1. 2016 14:38:11

czsars
Člen
Registrace: 22. 1. 2016
Příspěvků: 53

Re: Nahrazení textu mezi dvěma znaky - VYŘEŠENO

Měl bych ještě dotaz prosím k vašemu postupu, zjistil jsem, že podle toho co jste napsal jde hledat jen mezi těmito uvozovkami ale zkoušel jsem např: tohle {tento text odstranit} vaším postupem, čili takhle {.*} a nahradit takhle {} a nefunguje to.resp: otázka zní jak odstranit text mezi těmito znaky {}

ludviktrnka napsal(a)

dal bych najít nahradit s povelením regulárních výrazů: najít ".*" nahradit za "" (akorát pozor s těmi uvozovkami je trochu potíž, z klávesnice lezou pokaždý trochu jiné, takže pokud to nefunguje to nakopírovat uvozovky z buňky pomocí ctrl+C/V). Určitě by šel vymyslet sofistikovanější způsob hledání třeba lp něco napíše.


Trochu lepší je hledat text mezi uvozovkami takto: "[^"]*" a nahradit za ""

Editoval czsars (23. 1. 2016 14:41:22)

Offline

#8 23. 1. 2016 15:49:31

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,983

Re: Nahrazení textu mezi dvěma znaky - VYŘEŠENO

To co lze dělat pomocí regulárních výrazů je popsáno v nápovědě. Zadejte heslo "Seznam regulárních výrazů". Je tam tabulka která říká co a jak se dá nadefinovat.
     Když potom hledáte a nahrazujete dialogem (Najít a nahradit) musíte regulární výrazy povolit. Jsou pod křížkem "Ostatní možnosti".


PS :
     Jde to nejspíš například pomocí [abc123], nebo [a-e] a jistě i jinak, ale zejména pomocí zpětného lomítka  viz nápověda :
Zvláštní znak, který následuje po "\", se interpretuje jako normální znak a ne jako regulární výraz (kromě kombinací \n, \t, \> a \<). Např. "tree\." najde "tree.", ale ne "treed" či "trees".


     Je to asi jedno - ale hledáte něco jiného nežli jste deklaroval na začátku. To je velmi obvyklé až typické - většinou tazatel zjistí že chtěl něco jiného nežli na co se ptal původně. Důvodem bývá neschopnost správně určit problém nebo zatajování skutečného účelu - ale to Váš případ není.
     Měl byste otevřít nový dotaz ale nejdříve pročíst nápovědu a také články spolu se staršími příspěvky.

   
     Ještě existují další prostředky. Například automatické opravy, kde si můžete nadefinovat co se automaticky nahradí, vzorcem - to je pracnější, ale univerzálnější, nebo makrem.

Editoval neutr (23. 1. 2016 16:13:36)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#9 23. 1. 2016 16:23:44

czsars
Člen
Registrace: 22. 1. 2016
Příspěvků: 53

Re: Nahrazení textu mezi dvěma znaky - VYŘEŠENO

Děkuji za odpověď, nicméně hledám přesně to, co jsem deklaroval a to (odstranění textu mezi dvěma znaky) vi: "odstranittentotext" výsledek "" a nebo odstranit tento text {odstranittentotext} výsledek {}. Místo těch uvozovek, nebo závorek může být cokoliv ale pořád je to dotaz mezi dvěma znaky. Akorát nechápu proč s těmi uvozovkami to šlo a s temi závorkami ne. I tak moc děkuji za odpověď a promiňte opravdu se přiznám, že moc v calcu neumím., jen potřebuji tyto dvě věci a ta druhá mi prostě nejde.

neutr napsal(a)

To co lze dělat pomocí regulárních výrazů je popsáno v nápovědě. Zadejte heslo "Seznam regulárních výrazů". Je tam tabulka která říká co a jak se dá nadefinovat.
     Když potom hledáte a nahrazujete dialogem (Najít a nahradit) musíte regulární výrazy povolit. Jsou pod křížkem "Ostatní možnosti".


PS :
     Jde to nejspíš například pomocí [abc123], nebo [a-e] a jistě i jinak, ale zejména pomocí zpětného lomítka  viz nápověda :
Zvláštní znak, který následuje po "\", se interpretuje jako normální znak a ne jako regulární výraz (kromě kombinací \n, \t, \> a \<). Např. "tree\." najde "tree.", ale ne "treed" či "trees".


     Je to asi jedno - ale hledáte něco jiného nežli jste deklaroval na začátku. To je velmi obvyklé až typické - většinou tazatel zjistí že chtěl něco jiného nežli na co se ptal původně. Důvodem bývá neschopnost správně určit problém nebo zatajování skutečného účelu - ale to Váš případ není.
     Měl byste otevřít nový dotaz ale nejdříve pročíst nápovědu a také články spolu se staršími příspěvky.

   
     Ještě existují další prostředky. Například automatické opravy, kde si můžete nadefinovat co se automaticky nahradí, vzorcem - to je pracnější, ale univerzálnější, nebo makrem.

Offline

#10 23. 1. 2016 16:37:48

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,983

Re: Nahrazení textu mezi dvěma znaky - VYŘEŠENO

Je to jednoduché ty složené závorky {} patří mezi regulární výrazy. Proto je normálně nelze nahradit.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#11 23. 1. 2016 18:45:38

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 568

Re: Nahrazení textu mezi dvěma znaky - VYŘEŠENO

najít \{[^}]*\} a nahradit{}


a nebo tedy jednodušeji najít \{.*\} nahradit {}

Editoval ludviktrnka (23. 1. 2016 18:48:06)


LibreOffice 6.2.

Offline

#12 23. 1. 2016 19:06:10

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,983

Re: Nahrazení textu mezi dvěma znaky - VYŘEŠENO

Asi mi došlo proč hodláte nahrazovat ty složené závorky - zadejte to do dialogu najít a nahradit. Vy jste to testoval na nějakém vzorci - napište jak to vypadá (vykopírujte) nebo napište co s těmi regulárními výrazy děláte. Ony ty závorky Vám zůstaly ve výsledku - to je špatně.
     Já jsem dumal jaký že hyperlink používá složené závorky - neznám takový ale je to možné :-)
Zajímavé bylo proč se sháníte zrovna po těch závorkách které jsou regulárními výrazy. Mezi tím dělám ještě jiný dotaz a tak jsem na to přišel až když jsem si byl kouřnout :-)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#13 24. 1. 2016 02:23:53

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 810

Re: Nahrazení textu mezi dvěma znaky - VYŘEŠENO

ludviktrnka napsal(a)

najít \{[^}]*\} a nahradit{}
a nebo tedy jednodušeji najít \{.*\} nahradit {}

Na ten jednodušší postup si dávejte pozor:

V řetězci
xxx xxx {ccc ccc ccc ccc} bbb bbb bbb {eee eee eee} zzz

ponechá jen
xxx xxx {} zzz

tj. maže vše mezi první { a poslední }

Fungovat by mohlo najít \{.*?\}
ovšem v LO i AOO byly regulární výrazy implementovány chybně. Sice vývojáři hlásí, že je to opraveno, ale minimálně v AOO tento výraz funguje chybně.

Použití najít \{[^}]+\} funguje i pro více závorek, ale je chybné při vnořených závorkách.

Bezpečnější je najít \{[^{}]+\}, odstraní to obsah nejnižších závorek.

Určitě je vhodné data před použitím zazálohovat.

Offline

#14 25. 1. 2016 10:50:36

czsars
Člen
Registrace: 22. 1. 2016
Příspěvků: 53

Re: Nahrazení textu mezi dvěma znaky - VYŘEŠENO

Všem vám mockrát děkuju, mám se co učit.

Offline

Zápatí