Programovanie makier v LibreOffice: Funkcie Trim, LTrim a RTrim

LibreOffice Potrebujete sa zbaviť nepotrebných medzier? Slúžia nato funkcie Trim a jej deriváty LTrim a RTrim, ktoré si zachviľu ukážeme.   

Funkcia Trim

Funkcia Trim nám odstráni v reťazci začiatočnú a konečnú medzeru. Poďme si ju vyskúšať.

1. príklad: Prvá skúška funkcie Trim

Sub Macro   REM začiatok procedúry

Dim retazec As String  REM deklarácia premennej typu reťazec

retazec = " Dnes je ale pekne však? "   REM plníme reťazec znakmi

MsgBox Trim(retazec)   REM využitie funkcie Trim na odstránenie medzier a následný výpis na obrazovku 

End Sub   REM koniec procedúry

Výsledok makra Výsledok makra

Rozbor makra: Makro nám pekne v reťazci odstráni medzery. Ale pozor, neodstráni medzery vo vnútri celého reťazca. Je to pochopiteľné, pretože Trim odstraňuje len začiatočnú a konečnú medzeru v celom reťazci, nie čo sa nachádza vo „vnútri“ samotného reťazca.

2. príklad: Môžme reťazec zadať i do vnútra funkcie Trim

Sub Macro  REM začiatok procedúry

Dim retazec As String   REM deklarácia premennej typu reťazec

MsgBox Trim(" Slnko je najhmotnejšie teleso v Slnečnej sústave!" )   REM využitie funkcie Trim a výpis na obrazovku 

End Sub   REM koniec procedúry

Výsledok makra Výsledok makra

3. príklad: Reťazec definovaný užívateľom

Sub Macro   REM začiatok procedúry

Dim retazec As String   REM deklarácia premennej typu reťazec

retazec = InputBox("Zadaj reťazec taký, že na začiatku a na konci nech je medzera!")   REM vstup od užívateľa 

If IsNull(retazec) Then Exit Sub   REM ak užívateľ nič nezadal, makro končí

If Len(Trim(retazec)) = 0 Then Exit Sub   REM ak reťazec má dĺžku 0, inak povedané, užívateľ nič nezadal, makro potom končí

MsgBox Trim(retazec)   REM využitie funkcie Trim a výpis na obrazovku 

End Sub   REM koniec procedúry 

Vstup od užívateľa Vstup od užívateľa

Výsledok makra Výsledok makra

Rozbor makra: Pre zopakovanie, funkcia IsNull zisťuje, či bolo vôbec niečo napísané užívateľom. Funkcia Len zisťuje dĺžku reťazca.

4. príklad: Modifikovaný 3. príklad

Sub Macro   REM začiatok procedúry

Dim retazec As String   REM deklarácia premennej typu reťazec
Dim i As Integer   REM deklarácia premennej typu celočíselného

retazec = InputBox("Zadaj reťazec taký, že na začiatku a na konci nech je medzera!")   REM vstup od užívateľa  

If IsNull(retazec) Then Exit Sub   REM ak užívateľ nezadá žiadný reťazec, makro končí 

If Len(Trim(retazec)) = 0 Then Exit Sub

For i = 0 To Len(retazec)   REM cyklus s počtom iterácii dĺžky poľa
retazec = retazec & Trim(retazec)   REM využitie funkcie Trim 
Next   REM ďalšia iterácia cyklu 

MsgBox retazec   REM výpis na obrazovku 

End Sub   REM koniec procedúry 

Vstup od užívateľa Vstup od užívateľa

Výsledok makra Výsledok makra

Rozbor programu: Tento príklad slúži nato, aby sme videli, že skutočne i z tej pravej častí funkcia Trim odstráni medzeru. Avšak, trpí to neduhami, pretože v cykle vždy uložíme i predchádzajúce reťazce. Nie je to práve zdarná implementácia, ale ako zaujímavá ukážka to postačí. Lepšie táto funkcia vynikne napr. pri bunkách LO Calc, ale to až niekedy v budúcností.

Funkcie LTrim a RTrim

Funkcia Trim odstráni medzeru zľava aj sprava v reťazci. Funkcie LTrim zmaže len zľava a funkcia RTrim zmaže sprava. Podľa toho, akú medzeru by ste chceli odstrániť, vyberiete danú funkciu. V príklade si ukážeme oba funkcie a ich fungovanie.

5. príklad: Testujeme funkcie LTrim a RTrim

Sub Macro   REM začiatok procedúry

Dim retazec As String   REM deklarácia premenných
Dim retazec1 As String
Dim i As Integer

MsgBox "Definovane retazce programom: " & Chr(10) & LTrim("Pomaranč") & LTrim(" Pomaranč") & Chr(10) & RTrim("Pomaranč ") & RTrim("Pomaranč")  REM výstup na obrazovku 

retazec = InputBox("Zadaj reťazec!")    REM vstup prvý 

If IsNull(retazec) Then Exit Sub   REM keď uživateľ nič nezadá, makro končí 

If Len(Trim(retazec)) = 0 Then Exit Sub

For i = 0 To Len(retazec)   REM cyklus 
retazec = retazec & LTrim(retazec)
Next
MsgBox retazec

retazec1 = InputBox("Zadaj reťazec!") 
If IsNull(retazec1) Then Exit Sub
If Len(Trim(retazec1)) = 0 Then Exit Sub

For i = 0 To Len(retazec1)
retazec1 = retazec1 & LTrim(retazec1)
Next
MsgBox retazec1

End Sub   REM koniec procedúry
(Jako ve škole) Průměr: 1.00 | Hodnotilo: 3
 

Komentáře

user avatar neutr
Odpovědět
Programovanie makier v LibreOffice: Funkcie Trim, LTrim a RTrim
19. 07. 2017, 14:59:42
Jenom zajímavost :

Při čištění textu může nastat více problematických případů nežli jen mezery CHR(32) na začátku a na konci. Když se toto téma nakouslo tak by se mělo doplnit ještě také o :

A) řešení pro více mezer uvnitř textu.
B) řešení pro čištění bílých znaků.

Je zřetelné že tématem jsou funkce pro úpravu řetězce a tohle téma je případné pro MID. Ale mělo by to být poznamenáno protože potřeba čistit se nezakládá jen na funkci TRIM (je to také příkaz) i když by se to dalo nejprve rozsekat na slova, očistit a následně spojit s jedinou mezerou.

Přidat názor

 

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích najdete v nápovědě. Diskuzi můžete sledovat pomocí RSS kanálu.

 
Eduard Boldižár

Eduard Boldižár

Som redaktorom stránky astrotech.cz. Mám 24 rokov. Čas trávim v IT škole. Medzi moje záľuby patrí astronómia, sci-fi literatúra a programovanie.

 
 
 
woo jaw demo hz