Manipulação de strings e texto
Nota: nos exemplos, algumas linhas de saída do console foram retiradas para clareza.
function! split
Cria um bloco (uma série) contendo as partes de uma string separadas por um delimitador. Este delimitador é dado como um argumento. split é particularmente útil para analisar e manipular arquivos de texto e no dialeto de parse.
>> s: "My house is a very funny house"
>> split s " " ;every space is a delimiter.
== ["My" "house" "is" "a" "very" "funny" "" "" "" "" "house"] ;result is a series with 11 elements.
>> s: "My house ; is a very ; funny house"
>> split s ";" ;split happens at the semi-colons.
== ["My house " " is a very " " funny house"] ;result is a series with 3 elements.
removing characters: action! trim
A palavra trim sem refinamentos, remove os espaços em branco e os tabs do começo e do fim de uma string. Também remove none de um bloco ou um objeto. O valor do argumento é alterado. Possui refinamentos para retirar caracteres específicos..
Refinements:
/head - Remove só da head (início).
/tail - Remove só da tail (final).
/auto - Auto-indenta linhas relativas à primeirla linha.
/lines - Remove todos os line-breaks e espaços extras.
/all - Remove todos os espaços, mas não os line-breaks.
/with - A mesma coisa que /all, mas remove caracteres em um argumento "with" fornecido por você. Deve ser char! string! ou integer!
>> e: " spaces before and after "
>> trim e
== "spaces before and after"
trim espaços antes:
>> e: " spaces before and after "
>> trim/head e
== "spaces before and after "
trim espaços depois:
>> e: " spaces before and after "
>> trim/tail e
== " spaces before and after"
trim caracteres específicos:
>> d: "our house in the middle of our street"
>> trim/with d " "
== "ourhouseinthemiddleofourstreet"
>> a: "house"
>> trim/with a "u"
== "hose"
o oposto de trim: function! pad
pad expande uma string para um determinado tamanho usando espaços. O default é adicionar espaços à direita, mas com o refinamento /left, os espaços são adicionados à esquerda, ou seja, no início. Cuidado, pois a string original é modificada.
>> a: "House"
>> pad a 10
== "House "
>> pad/left a 20
== " House "
contatenação de texto: function! rejoin
>> a: "house" b: " " c: "entrance"
>> rejoin [a b c]
== "house entrance"
ou, usando append - modifica a série original.
>> append a c
== "house entrance"
>> a: "house" b: " " c: "entrance"
>> append a c
== "houseentrance"
>> append a append b c
== "houseentrance entrance" ; "a" foi alterada para "houseentrance" na última manipulação
transformando séries em texto: action! form
form transforma uma série em uma string, removendo os colchetes e adicionando espaços entre os elementos. form foi visto também no capítulo Acessando e formatando dados.
>> a: ["my" "house" 23 47 4 + 8 ["a" "bee" "cee"]]
>> form a
== "my house 23 47 4 + 8 a bee cee"
/part
O refinamento /part limita o número de caracteres da string criada.
>> a: ["my" "house" 23 47 4 + 8 ["a" "bee" "cee"]]
>> form/part a 8
== "my house"
comprimento da string: action! length?
>> f: "my house"
>> length? f
== 8
parte esquerda da string:
usando copy/part :
>> s: "nasty thing"
>> b: copy/part s 5
== "nasty"
parte direita da string:
usando at :
>> s: "nasty thing"
>> at tail s -5
== "thing"
usando remove/part - isto muda a série original, cuidado!
>> s: "nasty thing"
>> remove/part s 6
== "thing"
parte do meio da string:
usando copy/part e at:
>> a: "abcdefghijkl"
>> copy/part at a 4 3
== "def"
inserindo strings:
no começo, usando insert:
>> s: "house"
>> insert s "beautiful "
>> s
== "beautiful house"
no fim, usando append:
>> s: "beautiful"
>> append s " day"
== "beautiful day"
no meio, usando insert at:
>> s: "nasty thing"
>> insert at s 7 "little "
>> s
== "nasty little thing"
native! lowercase - letras minúsculas
Muda a string original, cuidado.
>> a: "mY HoUse"
>> lowercase a
== "my house"
/part
>> a: "mY HoUse"
>> lowercase/part a 2
== "my HoUse"
native! uppercase - letras maiúsculas
>> a: "mY HoUse"
>> uppercase a
== "MY HOUSE"
/part
>> a: "mY HoUse"
>> uppercase/part a 2
== "MY HoUse"