Introdução à Programação
Um enfoque orientado a construção de
modelos em programas baseados em objetos
Gustavo Motta
Departamento de Informática - UFPB
8. Manipulação de Strings
► A classe String
Usada para representação e manipulação seqüências de
caracteres
► Inclui métodos úteis para úteis para processamento de textos
Tamanho do string, i. e., a quantidade de caracteres armazenados
Caractere existente numa dada posição do string
► “Java”.lenght() 4
► “Java”.charAt(0) ‘J’
► “Java”.charAt(2) ‘v’
► “Java”.charAt(4) [Link]
► “Java“.toCharArray() {‘J’,‘a’,’v’,’a’}
► Construção de instâncias da classe String
String curso = “Ciência da Computação”;
String curso = new String(“Ciência da Computação”);
char[] caracteres = {‘C’,‘i’,’ê’,’n’,’c’,’i’,’a’,’ ’,
(C) 2008 Gustavo Motta 2
’d’,’a’,’ ’,’C’,’o’,’m’,’p’,’u’,’t’,’a’,’ç’,’ã’,’o’};
8. Manipulação de Strings
► A classe String
Exemplo – Jogo da Forca
► 1. Inicializa-se um string com palavra a ser adivinhada e cria-se
um array de booleanos, cada posição correspondendo a um
caractere da palavra, inicializada com false, para indicar que
nenhum caractere foi adivinhado. Inicializa-se um array de 26
posições booleanas para indicar as letras que já foram
utilizadas
► 2. Mostra-se para o usuário quais letras já foram adivinhadas e
quais letras já foram utilizadas
► 3. Pede-se para o usuário entrar com uma letra, que é incluída
no rol das letras usadas e marca-se a letra nas posições
correspondentes da palavra a ser adivinhada, se pertinente
(C) 2008 Gustavo Motta 3
► Caso todas as letras da palavra tenha sido adivinhada, então o
8. Manipulação de Strings
► A classe String
Métodos para comparação de string
► Strings não devem ser comparados com == – por que?
String curso = “Computação”;
“Computação”.equals(curso) true
“computação”.equals(curso) false
[Link](“Computação”) true
[Link](“Comuptação”) false
[Link](curso) true
“Computação”.equalsIgnoreCase(curso) true
“cOmPutaÇãO”.equalsIgnoreCase(curso) true
[Link](“cOmPutaÇãO”) true
[Link](“cOmPutaÇã”) false
(C) 2008 Gustavo Motta 4
[Link](curso) true
8. Manipulação de Strings
► A classe String
Métodos para comparação de strings
► Considerando apenas o início ou o fim do string
String curso = “Computação”;
[Link](“Comp”) true
[Link](“comp”) false
[Link](“Computação”) true
[Link](“Computaçãoo”) false
[Link](“”) true
[Link](“ação”) true
[Link](“Ação”) false
[Link](“Computação”) true
[Link](“Computaçãoo”) false
(C) 2008 Gustavo Motta 5
[Link](“”) true
8. Manipulação de Strings
► A classe String
Métodos para procura de substrings
► Verificar se um string contém outro string
String curso = “Computação”;
[Link](“ação”) 6
[Link](“o”) 1
[Link](“uta”) 4
[Link](“cação”) -1
[Link](“”) 0
[Link](“Comp”) 0
(C) 2008 Gustavo Motta 6
8. Manipulação de Strings
► A classe String
Métodos para transformação de strings
► String em Java são imutáveis
A “modificação” de um string é, de fato, a criação de um novo
string, numa versão transformado do string anterior
► String curso = “Computação ”;
Os métodos de de processamento de string podem ser combinados
► curso = “ Ciência da ”.concat(curso);
curso = “ Ciência da ”.concat(curso);
► [Link]() “ ciência da computação ”
[Link]().trim().substring( 12DA
► [Link]() “ CIÊNCIA ) “OMPUTAÇÃO”
COMPUTAÇÃO ”
► [Link]() “Ciência da Computação”
► [Link](‘ ’, ‘-’) “-Ciência-da-Computação-”
► [Link](12) “Computação ”
► [Link](12, 16) “Comp”
► [Link](16, 12) [Link]
► [Link](16,
[Link](16, [Link]())(C) [Link]
2008 Gustavo Motta 7
8. Manipulação de Strings
► A classe String
Métodos para conversão de tipos com strings
► Converte valores de tipos nativos para strings e vice-versa
Tipos nativos para String
► [Link](10) “10”
► [Link](15.4) “15.4”
► [Link](‘v’) “v”
► char[] carac = {'J', 'a', 'v', 'a'};
[Link](carac) “Java”;
String para tipos Nativos
► [Link](“10”) 10
► [Link](“3.2383”) 3.2383
► [Link](“10.33”)
[Link]
► [Link](“3.2a383”)
(C) 2008 Gustavo Motta 8
[Link]
8. Manipulação de Strings
► A classe StringBuffer
Permite criação e manipulação de strings modificáveis
► Lembre que instância da classe String são imutáveis
A criação de instâncias de StringBuffer é mais custosa
que a criação de instâncias da classe String, porém a
manipulação é bem mais eficiente
Instâncias da classe StringBuffer têm duas variáveis de
instância do tipo inteiro associadas
► Uma para indicar o comprimento do string, isto é, a quantidade
de caracteres armazenados num dados momento
► Outra para indicar a capacidade, que corresponde ao número
máximo de caracteres que podem ser armazenados pela
instância num dado momento
(C) 2008 Gustavo Motta 9
A capacidade pode ser expandida automática ou manualmente
8. Manipulação de Strings
► A classe StringBuffer
StringBuffer str = new StringBuffer(50);
StringBuffer str = new StringBuffer(“Java”);
[Link](‘ ’); [Link](“Language ”);
[Link](10);
[Link](str); Java Language 10
[Link](14, “é ”);
[Link](str); Java Language é 10
[Link](5, 13);
[Link](str); Java é 10
[Link]();
(C) 2008 Gustavo Motta 10
[Link](str); 01 é avaJ