com.arch.util.CaracterUtils Maven / Gradle / Ivy
package com.arch.util;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.Charset;
import java.util.Collections;
import java.util.Locale;
public class CaracterUtils {
/**
* Para a normalização dos caracteres de 32 a 255, primeiro caracter
*/
private static final char[] FIRST_CHAR = (" !'#$%&'()*+\\-./0123456789:;<->?@ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ "[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ E ,f'.++^%So ZY !C#$Y|$'(a<--(_o+23'u .,1o>113?AAAAAAACEEEEIIIIDNOO"
+ "OOOXOUUUUyTsaaaaaaaceeeeiiiidnooooo/ouuuuyty").toCharArray();
/**
* Para a normalização dos caracteres de 32 a 255, segundo caracter
*/
private static final char[] SECOND_CHAR = (" ' , "
+ "\\ $ r'. + o E '' " + " M e # = 'C.< R .-.. ..>424 E E "
+ " E E hs e e h e e h ").toCharArray();
private static final String PT_BR = "pt-BR";
public static String alinharTextoEsquerda(String texto, int tamanho) {
return alinharTexto(texto, tamanho, " ", Direcao.ESQUERDA);
}
public static String alinharTextoEsquerda(String texto, int tamanho, String letra) {
return alinharTexto(texto, tamanho, letra, Direcao.ESQUERDA);
}
public static String alinharTextoDireita(String texto, int tamanho) {
return alinharTexto(texto, tamanho, " ", Direcao.DIREITA);
}
public static String alinharTextoDireita(String texto, int tamanho, String letra) {
return alinharTexto(texto, tamanho, letra, Direcao.DIREITA);
}
private static String alinharTexto(String value, int tamanho, String caracter, Direcao direcao) {
String texto = value;
// Checa se Linha a preencher � nula ou branco
if (texto == null || "".equals(texto.trim())) {
texto = "";
}
// Enquanto Linha a preencher possuir 2 espa�os em branco seguidos,
// substitui por 1 espa�o apenas
while (texto.contains(" ")) {
texto = texto.replaceAll(" ", " ").trim();
}
// Retira caracteres estranhos
texto = texto.replaceAll("[./-]", "");
if (texto.length() > tamanho) {
texto = texto.substring(0, tamanho);
}
StringBuilder sb = new StringBuilder(texto);
if (direcao == Direcao.ESQUERDA) { // a Esquerda
for (int i = sb.length(); i < tamanho; i++) {
sb.append(caracter);
}
} else {// a Direita
for (int i = sb.length(); i < tamanho; i++) {
sb.insert(0, caracter);
}
}
return sb.toString();
}
public static String removerCaracter(String value, String caracteres) {
String texto = value;
if (texto == null || "".equals(texto.trim())) {
texto = "";
}
while (texto.contains(" ")) {
texto = texto.replaceAll(" ", " ").trim();
}
// Retira caracteres estranhos
texto = texto.replaceAll("[" + caracteres + "]", "").trim();
return texto;
}
public static String formatarIM(String numero) {
if (numero == null) {
return "";
}
return numero.substring(0, numero.length() - 1) + "-" + numero.substring(numero.length() - 1);
}
public static String somenteNumero(String value) {
StringBuilder numbers = new StringBuilder();
for (char ch : value.toCharArray()) {
if (Character.isDigit(ch)) {
numbers.append(Character.toString(ch));
}
}
return numbers.toString();
}
public static String somenteLetraOuNumero(String value) {
StringBuilder numbers = new StringBuilder();
for (char ch : value.toCharArray()) {
if (Character.isDigit(ch) || Character.isAlphabetic(ch)) {
numbers.append(Character.toString(ch));
}
}
return numbers.toString();
}
public static String primeiraPalavra(String texto) {
String primeiraPalavra = texto;
int posicaoEspaco = primeiraPalavra.indexOf(' ');
if (posicaoEspaco > 0) {
primeiraPalavra = primeiraPalavra.substring(0, posicaoEspaco);
}
return primeiraPalavra;
}
public static String ultimaPalavra(String texto) {
String ultimaPalavra = texto;
int posicaoEspaco = ultimaPalavra.lastIndexOf(' ');
if (posicaoEspaco > 0) {
ultimaPalavra = ultimaPalavra.substring(posicaoEspaco + 1);
}
return ultimaPalavra;
}
public static String formataLikeSql(String conteudo) {
if (NumberUtils.containsOnlyNumber(conteudo)) {
Long numero = new Long(conteudo);
return numero.toString();
}
return conteudo.toLowerCase(Locale.forLanguageTag(PT_BR));
}
/**
* Efetua as seguintes normalizações para obtenção de certificados: -
* Elimina acentos e cedilhas dos nomes; - Converte aspas duplas em simples;
* - Converte algumas letras estrangeiras para seus equivalentes ASCII (como
* ß, convertido para ss) - Põe um "\" antes de vírgulas, permitindo nomes
* como "Verisign, Corp." e de "\", permitindo nomes como " a \ b "; -
* Converte os sinais de = para - - Alguns caracteres são removidos: - os
* superiores a 255, mesmo que possam ser representados por letras latinas
* normais (como s, = U+015E = Latin Capital Letter S With Cedilla); - os
* caracteres de controle (exceto tab, que é trocado por um espaço)
*
* @param str A string a normalizar.
* @return A string normalizada.
*/
public static String removeCaracteresEspeciais(String str) {
char[] chars = str.toCharArray();
StringBuilder ret = new StringBuilder(chars.length * 2);
for (int i = 0; i < chars.length; ++i) {
char aChar = chars[i];
if (aChar == ' ' || aChar == '\t') {
ret.append(' '); // convertido para espaço
} else if (aChar > ' ' && aChar < 256) {
if (FIRST_CHAR[aChar - ' '] != ' ') {
ret.append(FIRST_CHAR[aChar - ' ']); // 1 caracter
}
if (SECOND_CHAR[aChar - ' '] != ' ') {
ret.append(SECOND_CHAR[aChar - ' ']); // 2 caracteres
}
}
}
return ret.toString();
}
public static String uTF8toISO(String str) {
Charset utf8 = Charset.forName("UTF-8");
Charset iso = Charset.forName("ISO-8859-1");
ByteBuffer inputBuffer = ByteBuffer.wrap(str.getBytes());
CharBuffer data = utf8.decode(inputBuffer);
// encode ISO-8559-1
ByteBuffer outputBuffer = iso.encode(data);
byte[] outputData = outputBuffer.array();
return new String(outputData);
}
public static String iSOtoUTF8(String str) {
Charset utf8charset = Charset.forName("UTF-8");
Charset iso88591charset = Charset.forName("ISO-8859-1");
ByteBuffer inputBuffer = ByteBuffer.wrap(str.getBytes());
// decode UTF-8
CharBuffer data = iso88591charset.decode(inputBuffer);
// encode ISO-8559-1
ByteBuffer outputBuffer = utf8charset.encode(data);
byte[] outputData = outputBuffer.array();
return new String(outputData);
}
public static String firstCaracterLowerCase(String value) {
return value.substring(0, 1).toLowerCase(Locale.forLanguageTag(PT_BR)).concat(value.substring(1));
}
public static String firstCaracterUpperCase(String value) {
return value.substring(0, 1).toUpperCase(Locale.forLanguageTag(PT_BR)).concat(value.substring(1));
}
public static String removeHtmlTags(String value) {
return value == null ? "" : value.replaceAll("\\<[^>]*>", "").trim();
}
public static String replicate(String value, int size) {
return String.join("", Collections.nCopies(size, "" + value));
}
private enum Direcao {
ESQUERDA, DIREITA
}
public static void main(String... args) {
LogUtils.warning(somenteNumero("123ABCabc..0.456789ç.;,askfj"));
LogUtils.warning("123ABCabc..0.456789ç.;,askfj".toLowerCase(Locale.forLanguageTag("pt-BR")));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy