Manipulace s textem



function! split

Vytvoří blok, sestavený z částí řetězce, rozděleného zadaným oddělovačem. Příkaz  split  je obzvláště vhodný pro analýzu a manipulaci s textovými  soubory.

>> s: "My house is a very funny house"
>> split s " "                                        ; oddělovačem je každá mezera
== ["My" "house" "is" "a" "very" "funny" "house"]

>> s: "My house ; is a very ; funny house"
>> split s ";"                        ; oddělovačem (delimiter) je středník
== ["My house " " is a very " " funny house"]

Odebrání znaků: action! trim

Slovo trim (zredukovat) bez upřesnění odebírá bílá místa (taby a mezery) ze začátku a konce řetězce (také odebírá none z entity typu block! nebo object!). Hodnota argumentu se změní.

>> e: " spaces before and after "  
>> trim e
== "spaces before and after"

trim/head - odebírá mezery pouze z čela

>> e: " spaces before and after "
>> trim/head e
== "spaces before and after "


trim/tail -  odebírá mezery pouze z chvostu

>> e: " spaces before and after "
>> trim/tail e
== " spaces before and after"


trim/auto - Auto indents lines relative to first line.    Dosud neimplementováno

trim/lines - odebere přerušení řádku a nadbytečné mezery
trim/all - odebere všechny mezery, nikoliv ale přerušení řádku


trim/with - odebere zadané znaky typu: char! string! integer!

>> d: "our house in the middle of our street"
>> trim/with d " "
== "ourhouseinthemiddleofourstreet"

>> a: "house"
>> trim/with a "u"
== "hose"

Opak trim: function! pad

Příkaz pad rozšíří řetězec na danou velikost přidáním mezer. Implicitně se mezery přidávají vpravo ale s upřesněním /left  se mezery přidávají vlevo. Pozor, mění původní string.

>> a: "House"
>> pad a 10
== "House "

>> pad/left a 20
== " House "

Spojení textu: function! rejoin

>> a: "house" b: " " c: "entrance"
>> rejoin [a b c]
== "house entrance"

případně s příkazem append, což mění původní řady:

>> append a c
== "house entrance"

>> a: "house" b: " " c: "entrance"

>> append a c
== "houseentrance"

>> append a append b c
== "houseentrance entrance"                ; "a" was changed to "houseentrance" in the last manipulation

Přeměna řady na text: action! form

Příkaz form přemění řadu na string odebráním hranatých závorek a přidáním mezer mezi elementy.

>> a: ["my" "house" 23 47 4 + 8 ["a" "bee" "cee"]]
>> form a
== "my house 23 47 4 + 8 a bee cee"

form/part

Upřesnění /part limituje počet znaků ve vytvořeném řetězci.

>> a: ["my" "house" 23 47 4 + 8 ["a" "bee" "cee"]]
>> form/part a 8
== "my house"

Zjištění délky řetězce: action! length?

>> f: "my house"
>> length? f                        ; see chapter "Series 'getters'"
== 8

Přehled manipulací

Levá strana řetězce:

použitím copy/part :

>> s: "nasty thing"
>> b: copy/part s 5
== "nasty"

Pravá strana řetězce:

použitím at :

>> s: "nasty thing"
>> at tail s -5
== "thing"

použitím remove/part - pozor, mění původní řetězec!

>> s: "nasty thing"
>> remove/part s 6
== "thing"

Střední část řetězce:

použitím copy/part a at:

>> a: "abcdefghijkl"
>> copy/part at a 4 3
== "def"

Vkládání řetězců:

na začátek, s použitím insert:

>> s: "house"
>> insert s "beautiful "

>> s
== "beautiful house"

na konec, s použitím append:

>> s: "beautiful"
>> append s " day"
== "beautiful day"

ve střední části, s použitím insert at:

>> s: "nasty thing"
>> insert at s 7 "little "

>> s
== "nasty little thing"


native! lowercase

Pozor, mění původní řetězec.

>> a: "mY HoUse"
>> lowercase a
== "my house"

lovercase/part

>> a: "mY HoUse"
>> lowercase/part a 2
== "my HoUse"


native! uppercase

>> a: "mY HoUse"
>> uppercase a
== "MY HOUSE"

uppercase/part

>> a: "mY HoUse"
>> uppercase/part a 2
== "MY HoUse"