Os métodos que retornam um valor booleano geralmente começam com a palavra “é” e significam verificar se o elemento que está sendo verificado corresponde a uma determinada condição. O método Character.isDigit() , que discutiremos neste artigo, determina se o valor char especificado é um dígito.
Sintaxe do método Java isDigit
java.lang.Character.isDigit(char ch) é um método integrado em Java que determina se o caractere especificado é um dígito ou não. O que significa “um dígito” no contexto de programação Java? De acordo com a definição em Java Doc, se o método Character.getType(ch) retornar a constante DECIMAL_DIGIT_NUMBER , o caractere é um dígito. Alguns intervalos de caracteres Unicode que contêm dígitos são os seguintes:-
De '\u0030' a '\u0039' são dígitos ISO-LATIN-1 ('0' a '9')
-
De '\u0660' a '\u0669' são dígitos árabe-índicos
-
De '\u06F0' a '\u06F9' são dígitos árabe-índicos estendidos
-
De '\u0966' até '\u096F' são dígitos Devanagari
-
De \uFF10' a '\uFF19' são dígitos de largura total
public static boolean isDigit(char myChar)
Onde myChar é o personagem a ser testado. Este método retorna verdadeiro se o caractere for um dígito e falso caso contrário. De acordo com o documento Java, o método isDigit(char myChar) não pode lidar com caracteres suplementares. Para suportar todos os caracteres Unicode, incluindo caracteres suplementares, o programador deve usar o método isDigit(int) . Parece o mesmo, mas, graças ao suporte a OOP e polimorfismo, funciona um pouco diferente. public static boolean isDigit(int codePoint) determina se o caractere especificado (ponto de código Unicode) é um dígito. Na terminologia de codificação de caracteres, um ponto de código ou posição de código é um valor numérico que corresponde a um caractere específico.isDigit(int codePoint) também retorna true se o caractere for um dígito e false caso contrário.
Exemplo simples do método Java isDigit
Vamos tentar trabalhar com o método Java Characher.isDigit() . Primeiro vamos escrever um programa simples para demonstrar o método.
public class isDigitTest {
//isDigit(char ch) simple example
public static void main(String[] args)
{
//characters to check using isDigit Java method
char myChar1 = '5', myChar2 = 'u', myChar3 = '0';
// Function to check if the character
// is digit or not, using isDigit() method
System.out.println("is char " + myChar1 + " a digit? "
+ Character.isDigit(myChar1));
System.out.println(
"is char " + myChar2 + " a digit? "
+ Character.isDigit(myChar2));
System.out.println(
"is char " + myChar3 + " a digit? "
+ Character.isDigit(myChar3));
}
}
A saída é:
o char 5 é um digito? verdadeiro é char u dígito? false é char u dígito? verdadeiro
Método Java isDigit, exemplo um pouco mais complicado
Vamos tentar usar Character.isDigit()em um problema mais interessante e da vida real. Existe um método de compactação chamado Run Length Encoding ou RLE para abreviar. Run Length Encoding é um algoritmo de compressão de dados que substitui caracteres repetidos (séries) por um caractere e o número de suas repetições. Uma série é uma sequência composta por vários personagens idênticos. Ao codificar (empacotar, compactar), uma string de caracteres idênticos que compõem uma série é substituída por uma string contendo o próprio caractere repetido e o número de suas repetições. Portanto, se você tiver uma string “hhhhhorrribleeee”, a codificação de comprimento de execução fornecerá um resultado: h5or3ible5. Se você decodificar a string, deverá verificar sequencialmente se possui um caractere de dígito ou não dígito e, se tiver um dígito, é hora de obter qual é o dígito. A propósito, todos vocês conhecem arquivos JPEG. Este formato usa uma variante de codificação de comprimento de execução em um padrão diagonal sobre dados quantizados. A variante é que apenas o comprimento das execuções de valores zero são codificados e todos os outros valores são codificados como eles próprios. No exemplo abaixo, usamos oMétodo Character.isDigit(char ch) para decodificar uma string codificada com codificação Run-length. Se você estiver interessado, tente concluir o programa, ou melhor, crie sua primeira parte e escreva um método para codificar uma string RLE, bem como ler uma string de um arquivo. Ou inserindo manualmente uma string do console enquanto verifica a exatidão da entrada. Aqui está um exemplo de decodificação RLE:
public class RleTest {
//the method to decode String using run-length encoding and
//isDigit() method
private static String decodeRle(String encoded) {
if (encoded.isBlank()) return "";
StringBuilder result = new StringBuilder();
int count = 0;
char baseChar = encoded.charAt(0);
for (int i = 1; i <= encoded.length(); i++) {
char c = i == encoded.length() ? '$' : encoded.charAt(i);
//checking using isDigit() method
if (Character.isDigit(c)) {
count = count * 10 + Character.digit(c, 10);
} else {
do {
result.append(baseChar);
count--;
} while (count > 0);
count = 0;
baseChar = c;
}
}
return result.toString();
}
public static void main(String[] args) {
//here we are going to decode an RLE-encoded string
System.out.println(decodeRle("C3ecddf8"));
}
}
A saída é:
CCCecddffffffff
Você deve ter notado que não estamos usando uma String , mas sim um StringBuilder . Por que? O fato é que String é imutável, e incrementamos o contador, e cada vez uma nova string será criada. Também usamos o método Character.digit no programa. java.lang.Character.digit() é um método que retorna o valor numérico do caractere ch no sistema numérico especificado. Se a base não estiver no intervalo MIN_RADIX <= base <= MAX_RADIX, ou se ch não for um dígito válido na base especificada, o método retornará -1.
GO TO FULL VERSION