Pular para o conteúdo

Textos

Strings, seus métodos, interpolação e formatação.

Criar#

dataforge
simples := "aspas duplas"
outro := 'aspas simples'
longo := """uma string
que atravessa
varias linhas"""

out simples.length(), longo.lines().length()

Acessar#

dataforge
nome := "DataForge"
out nome.length()      # 9
out nome[0]            # D
out nome[-1]           # e
out nome[0:4]          # Data
out nome[::-1]         # egroFataD

Métodos#

GrupoMétodos
caixaupper() lower() title() capitalize() swapcase()
limpezatrim() strip() lstrip() rstrip()
buscacontains(s) find(s) startswith(s) endswith(s) count(s)
trocareplace(a, b) removeprefix(p) removesuffix(s)
divisãosplit(sep) words() lines() partition(sep)
junçãojoin(itens) concat(...) repeat(n)
preenchimentopad_start(n, c) pad_end(n, c) center(n) zfill(n)
testeisalpha() isdigit() isalnum() isspace() isupper()
outrosreverse() slice(a, b) char_at(i) index_of(s)
dataforge
frase := "  DataForge e uma linguagem  "

out frase.trim()                        # sem espaços nas pontas
out frase.trim().upper()                # tudo maiúsculo
out frase.contains("linguagem")         # yes
out frase.trim().split(" ").length()    # 5
out "abc".pad_start(6, ".")             # ...abc
out "-".join(["a", "b", "c"])           # a-b-c

Interpolação#

Uma string prefixada por $ interpreta {…} como expressão:

dataforge
nome := "Ana"
idade := 30

out $"Ola {nome}, voce tem {idade} anos"
out $"no ano que vem: {idade + 1}"
out $"{yes} e {void} seguem a grafia da linguagem"
out $"{{chaves literais}} sao dobradas"

Compare com a alternativa por concatenação:

dataforge
"Ola, " + nome + "! Voce tem " + str(idade) + " anos."
$"Ola, {nome}! Voce tem {idade} anos."

A segunda tem menos ruído, menos + e nenhum str() — a conversão é automática. Detalhes em Interpolação.

Concatenação#

Com +. Números viram texto automaticamente quando um dos lados é texto:

dataforge
out "total: " + str(42)
out "x" + 1              # "x1" — conversão implícita

Formatar uma tabela#

pad_end alinha texto à esquerda; pad_start, números à direita:

dataforge
itens := [
    {"nome": "Mouse", "qtd": 15, "preco": 80.0},
    {"nome": "Teclado", "qtd": 3, "preco": 200.0}
]

out $"{"PRODUTO".pad_end(12)}{"QTD".pad_start(5)}{"PRECO".pad_start(10)}"
out "-".repeat(27)
cycle i in itens:
    out $"{i["nome"].pad_end(12)}{str(i["qtd"]).pad_start(5)}{str(i["preco"]).pad_start(10)}"
saída
PRODUTO       QTD     PRECO
---------------------------
Mouse          15      80.0
Teclado         3     200.0

Além do básico#

Para caixas, tabelas desenhadas, slug, remoção de acentos e distância entre textos, veja Arcane.Text. Para validação e extração por padrão, Arcane.Regex.