Java tutorial
/* * Copyright 2008 JRimum Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by * applicable law or agreed to in writing, software distributed under the * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS * OF ANY KIND, either express or implied. See the License for the specific * language governing permissions and limitations under the License. * * Created at: 30/03/2008 - 18:18:19 * * ================================================================================ * * Direitos autorais 2008 JRimum Project * * Licenciado sob a Licena Apache, Verso 2.0 ("LICENA"); voc no pode usar * esse arquivo exceto em conformidade com a esta LICENA. Voc pode obter uma * cpia desta LICENA em http://www.apache.org/licenses/LICENSE-2.0 A menos que * haja exigncia legal ou acordo por escrito, a distribuio de software sob * esta LICENA se dar COMO EST??, SEM GARANTIAS OU CONDIES DE QUALQUER * TIPO, sejam expressas ou tcitas. Veja a LICENA para a redao especfica a * reger permisses e limitaes sob esta LICENA. * * Criado em: 30/03/2008 - 18:18:19 * */ package br.com.nordestefomento.jrimum.utilix; import static br.com.nordestefomento.jrimum.utilix.ObjectUtil.isNotNull; import java.io.Serializable; import org.apache.commons.lang.StringUtils; /** * <p> * Esta classe tem a responsabilidade de prover servios utilitrios * relacionados a manipulao de <code>Strings</code> * </p> * * * @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a> * @author Misael Barreto * @author Rmulo Augusto * @author <a href="http://www.nordeste-fomento.com.br">Nordeste Fomento * Mercantil</a> * * @since 0.2 * * @version 0.2 */ public class StringUtil implements Serializable { public static final String WHITE_SPACE = " "; /** * */ private static final long serialVersionUID = 7425529940068032055L; /** * <p> * Construtor privado que previne a instanciao da classe at por * reflection * </p> * * @since 0.2 */ private StringUtil() { throw new AssertionError(); } /** * <p> * Mtodo privado para fins de reutilizao de cdigo. * </p> * <p> * Verifica se a <code>String</code> passada por parmetro no <code>null</code>, * no vazia (<code>StringUtils.EMPTY</code>) e no possui apenas espaos em branco. * </p> * <p> * Lana <code>NullPointerException</code>, com a mensagem definida em <code>messageNullPointer</code> * (segundo parmetro String), caso o valor passado seja <code>null</code> * </p> * <p> * Lana <code>IllegalArgumentException</code>, com a mensagem definida em <code>messageIllegalArgument</code> * (terceiro parmetro String), caso o valor passado seja vazio ou contenha apenas espaos em branco. * </p> * * @param value - String analisada * * @throws NullPointerException - Caso a string seja <code>null</code>. * @thows IllegalArgumentException - Caso a string seja vazia ou contenha apenas espaos em branco. * * @since 0.2 */ private static void checkNotBlank(String value, String messageNullPointer, String messageIllegalArgument) { ObjectUtil.checkNotNull(value, messageNullPointer); if (StringUtils.isBlank(value)) { throw new IllegalArgumentException(messageIllegalArgument); } } /** * <p> * Elimina simbolos como: <pre>><,;.:!*&%+-_<>[]\/</pre> * </p> * * @param str * String com os smbolos a serem removidos. * @return String sem smbolos. * @since 0.2 */ public static String eliminateSymbols(final String str) { String modifiedStr = str; if (isNotNull(modifiedStr)) { modifiedStr = StringUtils.replace(str, "-", StringUtils.EMPTY); modifiedStr = StringUtils.replace(str, "_", StringUtils.EMPTY); modifiedStr = StringUtils.replace(str, "=", StringUtils.EMPTY); modifiedStr = StringUtils.replace(str, "+", StringUtils.EMPTY); modifiedStr = StringUtils.replace(str, "%", StringUtils.EMPTY); modifiedStr = StringUtils.replace(str, "*", StringUtils.EMPTY); modifiedStr = StringUtils.replace(str, "@", StringUtils.EMPTY); modifiedStr = StringUtils.replace(str, "#", StringUtils.EMPTY); modifiedStr = StringUtils.replace(str, "&", StringUtils.EMPTY); modifiedStr = StringUtils.replace(str, ":", StringUtils.EMPTY); modifiedStr = StringUtils.replace(str, ".", StringUtils.EMPTY); modifiedStr = StringUtils.replace(str, ";", StringUtils.EMPTY); modifiedStr = StringUtils.replace(str, ",", StringUtils.EMPTY); modifiedStr = StringUtils.replace(str, "!", StringUtils.EMPTY); modifiedStr = StringUtils.replace(str, "?", StringUtils.EMPTY); modifiedStr = StringUtils.replace(str, "(", StringUtils.EMPTY); modifiedStr = StringUtils.replace(str, ")", StringUtils.EMPTY); modifiedStr = StringUtils.replace(str, "{", StringUtils.EMPTY); modifiedStr = StringUtils.replace(str, "}", StringUtils.EMPTY); modifiedStr = StringUtils.replace(str, "[", StringUtils.EMPTY); modifiedStr = StringUtils.replace(str, "]", StringUtils.EMPTY); modifiedStr = StringUtils.replace(str, "/", StringUtils.EMPTY); modifiedStr = StringUtils.replace(str, "\\", StringUtils.EMPTY); modifiedStr = StringUtils.replace(str, ">", StringUtils.EMPTY); modifiedStr = StringUtils.replace(str, "<", StringUtils.EMPTY); modifiedStr = StringUtils.replace(str, "\"", StringUtils.EMPTY); modifiedStr = StringUtils.replace(str, "'", StringUtils.EMPTY); modifiedStr = StringUtils.replace(str, "`", StringUtils.EMPTY); } return modifiedStr; } /** * <p> * Remove os zeros iniciais de uma <code>String</code>, seja ela numrica ou * no. * </p> * <p> * <code>removeStartWithZeros("00000") => 0</code><br /> * <code>removeStartWithZeros("00023") => 23</code><br /> * <code>removeStartWithZeros("02003") => 2003</code> * <p> * * @param str * @return a string sem zeros inicias ou um nico zero. * * @since 0.2 */ public static String removeStartWithZeros(final String str) { String withoutZeros = StringUtils.EMPTY; final String zero = "0"; if (isNotNull(str)) { if (StringUtils.startsWith(str, zero)) { withoutZeros = StringUtils.removeStart(str, zero); while (StringUtils.startsWith(withoutZeros, zero)) { withoutZeros = StringUtils.removeStart(withoutZeros, zero); } if (withoutZeros.trim().length() == 0) { withoutZeros = zero; } } else { withoutZeros = str; } } return withoutZeros; } /** * <p> * Remove a acentuao do texto, que inclui os acentos: * <ul> * <li>Agudo. ex.: </li> * <li>Grave. ex.: </li> * <li>Til. ex.: </li> * <li>Trema. ex.: </li> * <li>Circunflexo. ex.: </li> * </ul> * e o Cedilha (). * </p> * <p> * Os acentos so removidos tanto para letras minsculas como para letras * maisculas. * </p> * * @param value * String com os caracteres a serem removidos. * @return String sem acentuao. * @since 0.2 */ public static String eliminateAccent(final String value) { String modifiedValue = value; // Para e modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00E7', 'c'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00C7', 'C'); // Para , , , e modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00E0', 'a'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00E1', 'a'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00E2', 'a'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00E3', 'a'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00E4', 'a'); // Para , , e modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00E8', 'e'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00E9', 'e'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00EA', 'e'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00EB', 'e'); // Para , , e modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00EC', 'i'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00ED', 'i'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00EE', 'i'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00EF', 'i'); // Para , , , e modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00F2', 'o'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00F3', 'o'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00F4', 'o'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00F5', 'o'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00F6', 'o'); // Para , , e modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00F9', 'u'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00FA', 'u'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00FB', 'u'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00FC', 'u'); // Para , ?, , e modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00C0', 'A'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00C1', 'A'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00C2', 'A'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00C3', 'A'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00C4', 'A'); // Para , , e modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00C8', 'E'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00C9', 'E'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00CA', 'E'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00CB', 'E'); // Para , ?, e ? modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00CC', 'I'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00CD', 'I'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00CE', 'I'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00CF', 'I'); // Para , , , e modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00D2', 'O'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00D3', 'O'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00D4', 'O'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00D5', 'O'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00D6', 'O'); // Para , , e modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00D9', 'U'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00DA', 'U'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00DB', 'U'); modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00DC', 'U'); return modifiedValue; } /** * <p> * Verifica se a <code>String</code> passada por parmetro no <code>null</code>, * no vazia (<code>StringUtils.EMPTY</code>) e no possui apenas espaos em branco. * </p> * <p> * Lana exceo, com a mensagem passada por parmetro (segundo parmetro String), * caso no preencha estes requisitos. * </p> * * @param value - String analisada * * @throws NullPointerException - Caso a string seja <code>null</code>. * @thows IllegalArgumentException - Caso a string seja vazia ou contenha apenas espaos em branco. * * @since 0.2 */ public static void checkNotBlank(String value, String message) { checkNotBlank(value, message, message); } /** * <p> * Verifica se a <code>String</code> passada por parmetro no <code>null</code>, * no vazia (<code>StringUtils.EMPTY</code>) e no possui apenas espaos em branco. * Lana exceo caso no preencha estes requisitos. * </p> * * @param value - String analisada * * @throws NullPointerException - Caso a string seja <code>null</code>. * @thows IllegalArgumentException - Caso a string seja vazia ou contenha apenas espaos em branco. * * @since 0.2 */ public static void checkNotBlank(String value) { checkNotBlank(value, "String nula", "Valor invlido. String vazia ou contendo apenas espaos em brancos"); } }