String (ou cadeia de caracteres)
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)