QUICK REFERENCE: A CLASSE STRING

O Smalltalk tem muitas Classes básicas úteis e que estão presentes no Squeak-Etoys do micro OLPC. Nas próximas lições vamos ver um resumo das mais importantes.

Nessa lição, e na próxima, vamos aprender sobre duas Classes do grupo chamado: coleções. Veremos detalhes sobre duas coleções: String e Ordered Collection.

Não apresentaremos todos os métodos de cada Classe. Apenas os mais importantes. E, para cada método, vamos apresentar um mini-exercício que você pode reproduzir, usando o Workspace e o Transcript, como já mostramos.

Para criar um objeto da Classe String você precisa apenas assinalar um grupo de caracteres para uma variável. Qualquer coisa assim:

            |a|
            a := 'abcdef'.
e teremos o objeto de String: a.

Esse objeto pode chamar vários métodos. Nós apresentaremos primeiro um operador muito útil (mas pouco visível por ser muito pequeno).


,

Deu para ver? A vírgula é um operador para concatenar dois Strings.

Exemplo

| a |
a:='abcdef'.
Transcript show:  a,'xxx' 

Resultado

abcdefxxx

size

Retorna a quantidade de dígitos do String.

Exemplo

| a |
a:='abcdef'.
Transcript show:  a size.

Resultado

6

withCRs

Cada símbolo: \ é tratado como um "carriage return".

Exemplo

| a |
a:='ab\cde\f'.
Transcript show:  a withCRs.
 

Resultado

ab
cde
f

at:n

Retorna o caractere da posição n.

OBSERVAÇÃO: Repare abaixo como escrevemos um método (Transcript show) tendo um parâmetro que é uma operação com outro método tendo parâmetro. Usamos parêntesis e a ação dentro deles roda primeiro:

Exemplo

| a |
a:='abcdef'.
Transcript show:(a at: 2) . 

Resultado

b

findString:'x'

Retorna a posição do primeiro caractere do substring x.

IMPORTANTE: A primeira posição é 1 (não ZERO como em certas linguagens).

Exemplo

| a |
a:='abcxxdbc'.
Transcript show:  ( a findString: 'bc') . 

Resultado

2

findString:'x' startingAt: n caseSensitive: true|false

Retorna a posição do primeiro caractere do substring x começando de determinada posição e considerando maiúsculas e minúsculas ou não.

Exemplo

| a |
a:='abcxxdBC'.
Transcript show:  ( a findString: 'BC 'startingAt: 1 caseSensitive: true) . 

Resultado

0

OBSERVAÇÃO: O resultado foi ZERO porque nós fizemos um erro proposital e o string é 'BC ' (tendo um branco) e nós não temos esse grupo de letras no objeto. Mude para : 'BC' e refaça seu teste.

asUppercase

Muda todas as letras para maiúsculas.

Exemplo

| a |
a:='abcdef'.
Transcript show:  a asUppercase. 

Resultado

ABCDEF

findBetweenSubStrs: 's'

Esse método é muito importante! Ele é chamado "split" em algumas linguagens. Nós usamos o "separador" s dentro de um grupo de substrings e esse método divide o string total em muitas partes colocando essas partes como elementos de uma orderedColletion. Vamos falar de orderedColletion na próxima lição. Essa Classe tem o método at: para pegar o substring em determinado índice. Olhe e teste o exemplo para entender melhor.

DICA: Nós usamos esse "truque" para desconstruir mensagens mandadas como um String pela internet ou para simular um registro de arquivo com vários campos.

Exemplo

| a ordCol |
a:='ab@cd@ef'.
ordCol:= a findBetweenSubStrs: '@'. "retorna orderedCollection"
Transcript show:  (ordCol at: 2) . 

Resultado

cd

beginsWith: 'x'

É um teste que retorna true se o String começa com x.

Exemplo

| a |
a:='abcdef'.
Transcript show:   ( a beginsWith:'d').

Resultado

false

caseInsensitiveLessOrEqual: 'x'

Outro teste que retorna true se o String tem os mesmos caracteres (não testa maiúsculas/minúsculas) que o string.

Exemplo

| a |
a:='abcdef'.
Transcript show:   ( a caseInsensitiveLessOrEqual:'aBCdEf').

Resultado

true

asLowercase

Muda todas as letras para minúsculas

Exemplo

| a |
a :='ABCdef'.
Transcript show: a asLowercase.

Resultado

abcdef

capitalized

Passa o primeiro caractere do String para maiúscula.

Exemplo

| a |
a:='abcdef'.
Transcript show:     a capitalized .

Resultado

Abcdef

surroundedBySingleQuotes

O String é cercado por apóstrofos.

Exemplo

| a |
a:='abcdef'.
Transcript show:    a  surroundedBySingleQuotes .

Resultado

'abcdef'

withSeparatorsCompacted

Se temos mais que um "branco" entre caracteres esse intervalo passa a ter só um.

Exemplo

| a |
a:='ab     cde f'.
Transcript show:     a  withSeparatorsCompacted .

Resultado

'ab cde f'

replaceFrom: n1 to: n2 with: 'x' startingAt: n3

Método muito importante! Podemos substituir um dígito ou mais , em qualquer lugar.

Exemplo

| a |
a:='abcdef'.
Transcript show:   (a replaceFrom: 2 to: 2 with: 'X' startingAt: 1)

Resultado

aXcdef

withNoLineLongerThan: n

Retorna um String redividido de maneira que nenhuma linha tenha mais que certa quantidade de caracteres.

Exemplo

| a |
a:='This example is very simple.'.
Transcript show:  ( a withNoLineLongerThan:10)

Resultado

This
example
is very
simple.

copyReplaceAll: 'x' with:'y'

Substitui todos os'x' por 'y'

Exemplo

|a|
a:='abcdef'.
Transcript show: ( a copyReplaceAll:  'c' with:'X').

Resultado

abXdef

É possível converter um objeto (que não é String) em string usando: asString. Isso é usado, por exemplo quando se captura o conteúdo de um TextField. Vamos ver isso no futuro.


              LIÇÃO ANTERIOR       PRÓXIMA LIÇÃO             
ÍNDICE HOMEPAGE