Na primeira parte do artigo sobre String em Java foram apresentadas as características básicas dos objetos String: declaração e instanciação, tabela ASCII e como processar um caractere de uma string. Já na segunda parte foram abordados os métodos da classe String. Agora nesta terceira e última parte sobre o assunto serão estudados os métodos da classe Character.
A aplicação Java apresentada na Listagem 1 mostra como processar os caracteres de uma string usando a relação ordinal existente entre os caracteres. Por exemplo, do caractere 'A' até o caractere 'Z' na tabela ASCII se encontram todos os caracteres alfabéticos maiúsculos em ordem.
import java.util.Scanner;
public class String9 {
public static void main(String[] args) {
Scanner ler = new Scanner(System.in);
String s;
char c;
int i, n, ctalfa = 0, ctnum = 0;
System.out.printf("Informe uma String:\n");
s = ler.nextLine();
System.out.println();
n = s.length(); // tamanho da string (qtde de caracteres)
for (i=0; i<n; i++) {
c = s.charAt(i); // i-ésimo caractere da string 's'
// verificando se é um caractere alfabético
if (((c >= 'A') && (c <= 'Z')) ||
((c >= 'a') && (c <= 'z'))) {
ctalfa = ctalfa + 1;
System.out.printf("%c ---> %da. letra\n", c, ctalfa);
}
// verificando se é um caractere numérico
else if ((c >= '0') && (c <= '9')) {
ctnum = ctnum + 1;
System.out.printf("%c ---> %do. número\n", c, ctnum);
}
else System.out.printf("%c\n", c);
}
}
}
|
Listagem 1- Contando os caracteres alfabéticos e numéricos de uma string. |
A classe Character em Java possui vários métodos que simplificam a programação demonstrada na Listagem 1, entre eles destancam-se: | |||
static int | digit(char ch, int radix) | ||
Retorna o valor numérico correspondente ao caractere "ch" no sistema numérico indicado por "radix". | |||
static char | forDigit(int digit, int radix) | ||
Retorna o valor numérico correspondente ao caractere "ch" no sistema numérico indicado por "radix". | |||
static boolean | isDigit(char ch) | ||
Retorna verdadeiro se o caractere "ch" é um caractere numérico e falso caso contrário. | |||
static boolean | isLetter(char ch) | ||
Retorna verdadeiro se o caractere "ch" é um caractere alfabético e falso caso contrário. | |||
static boolean | isLetterOrDigit(char ch) | ||
Retorna verdadeiro se o caractere "ch" é um caractere alfabético ou é um caractere numérico e falso caso contrário. | |||
static boolean | isSpaceChar(char ch) | ||
Retorna verdadeiro se o caractere "ch" é um espaço em branco e falso caso contrário. | |||
static boolean | isLowerCase(char ch) | ||
Retorna verdadeiro se o caractere "ch" é um caractere alfabético minúsculo e falso caso contrário. | |||
static boolean | isUpperCase(char ch) | ||
Retorna verdadeiro se o caractere "ch" é um caractere alfabético maiúsculo e falso caso contrário. | |||
static boolean | toLowerCase(char ch) | ||
Retorna o caractere "ch" convertido, se houver, no correspondente caractere minúsculo. | |||
static boolean | toUpperCase(char ch) | ||
Retorna o caractere "ch" convertido, se houver, no correspondente caractere maiúsculo. | |||
Veja a documentação completa da classe Character em: http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Character.html |
A aplicação Java apresentada na Listagem 2 mostra como contar os caracteres alfabéticos e numéricos de uma string verificando o tipo do caractere através dos métodos da classe Character: isLetter() e isDigit(), respectivamente.
import java.util.Scanner;
public class String10 {
public static void main(String[] args) {
Scanner ler = new Scanner(System.in);
String s;
char c;
int i, n, ctalfa = 0, ctnum = 0;
System.out.printf("Informe uma String:\n");
s = ler.nextLine();
System.out.println();
n = s.length(); // tamanho da string (qtde de caracteres)
for (i=0; i<n; i++) {
c = s.charAt(i); // i-ésimo caractere da string 's'
// verificando se é um caractere alfabético
if (Character.isLetter(c)) {
ctalfa = ctalfa + 1;
System.out.printf("%c ---> %da. letra\n", c, ctalfa);
}
// verificando se é um caractere numérico
else if (Character.isDigit(c)) {
ctnum = ctnum + 1;
System.out.printf("%c ---> %do. número\n", c, ctnum);
}
else System.out.printf("%c\n", c);
}
}
}
|
Listagem 2- Contando os caracteres alfabéticos e numéricos de uma string. |
A aplicação Java apresentada na Listagem 3 exemplifica a utilização dos métodos da classe Character: isDigit(), isLowerCase(), isUpperCase() e isSpaceChar(), na verificação do tipo do caractere.
import java.util.Scanner;
public class String11 {
public static void main(String[] args) {
Scanner ler = new Scanner(System.in);
String s;
char c;
int i, n;
System.out.printf("Informe uma String:\n");
s = ler.nextLine();
System.out.println();
n = s.length(); // tamanho da String
for (i=0; i<n; i++) {
c = s.charAt(i);
if (Character.isDigit(c))
System.out.printf("%c <--- número\n", c);
else if (Character.isLowerCase(c))
System.out.printf("%c <--- letra minúscula\n", c);
else if (Character.isUpperCase(c))
System.out.printf("%c <--- letra maiúscula\n", c);
else if (Character.isSpaceChar(c))
System.out.printf("%c <--- space blank\n", c);
else System.out.printf("%c\n", c);
}
}
}
|
Listagem 3- Exibindo os caracteres de uma string. |
A aplicação Java apresentada na Listagem 4 exemplifica a utilização dos métodos isDigit() e digit() na conversão de um caractere numérico no seu respectivo valor inteiro.
import java.util.Scanner;
public class String12 {
public static void main(String[] args) {
Scanner ler = new Scanner(System.in);
String[] unidade = {"zero", "um", "dois", "três",
"quatro", "cinco", "seis", "sete", "oito", "nove"};
String s;
char c;
int i, num, n;
System.out.printf("Informe uma String:\n");
s = ler.nextLine();
System.out.println();
n = s.length(); // tamanho da String
for (i=0; i<n; i++) {
c = s.charAt(i);
if (Character.isDigit(c)) {
// converte o caractere numérico no correspondente número
// usando como base o sistema numérico decimal
num = Character.digit(c, 10);
System.out.printf("%c <--- %s\n", c, unidade[num]);
}
else System.out.printf("%c\n", c);
}
}
}
|
Listagem 4- Convertendo caracteres numéricos em valores inteiros. |
Ilustrando a execução das aplicações: | |
Listagem 1: | Listagem 2: |
Listagem 3: | Listagem 4: |
Referência:
Peter Jandl Junior. Introdução ao Java. São Paulo: Berkeley - 2002.
Com este terceiro artigo concluímos nossa abordagem sobre string em Java.
Obrigado e um abraço.
Prof. Omero Francisco Bertol (http://www.pb.utfpr.edu.br/omero/)
Aplicações Java (http://www.pb.utfpr.edu.br/omero/Java/Fontes.HTM)
Exercícios com String (http://www.pb.utfpr.edu.br/omero/Java/Fontes/Lista%20String/Lista%20String.HTM)
Download dos Exemplos (http://www.pb.utfpr.edu.br/omero/Java/Artigos/String.rar)