Eso depende de lo que quieras decir. Si solo desea deshacerse de ellos, haga esto: (Actualización: aparentemente también desea mantener los dígitos, use las segundas líneas en ese caso)
cuando uso esta función, también se eliminan todos los números. pero no quiero que se eliminen los números. Solo quiero eliminar los caracteres especiales. Sugiera algo ..
Tanu
Bueno, dijiste que solo querías el alfabeto. Pero actualizaré mi respuesta en un minuto
Sean Patrick Floyd
Quiero concat string pero con alguna condición como 1.Si solo hay un resultado, no se requiere concat 2.Si el resultado es más de 1 que la cadena concat en el siguiente ejemplo de formulario: stack + over + flow
Tanu
2
@Tanu, esa es una pregunta diferente. Hazlo uno nuevo
Pekka
¿Qué pasa si no quiero que se eliminen los espacios? o decir todos los espacios como pestañas, las líneas nuevas se contrajeron como un solo espacio?
Maldito
74
Estoy usando esto.
s = s.replaceAll("\\W", "");
Reemplaza todos los caracteres especiales de la cadena.
aquí
\ w: un carácter de palabra, abreviatura de [a-zA-Z_0-9]
Aquí se reemplazan todos los caracteres especiales excepto el espacio, la coma y el ampersand. También puede omitir el espacio, la coma y el ampersand mediante la siguiente expresión regular.
Puede usar expresiones regulares básicas en cadenas para encontrar todos los caracteres especiales o usar clases de patrones y comparadores para buscar / modificar / eliminar cadenas definidas por el usuario. Este enlace tiene algunos ejemplos simples y fáciles de entender para expresiones regulares: http://www.vogella.de/articles/JavaRegularExpressions/article.html
Puede obtener unicode para ese carácter basura de la herramienta de mapa de caracteres en Windows PC y agregar \ u eg \ u00a9 para el símbolo de copyright. Ahora puede usar esa cadena con ese carácter basura en particular, no elimine ningún carácter basura, reemplácelo con unicode adecuado.
Le recomiendo que agregue notas en su sección de respuestas para explicar su código. Lea más sobre cómo escribir buenas respuestas .
Joe Ferndz
Esto realmente no responde a la pregunta. Si tiene una pregunta diferente, puede hacerla haciendo clic en Preguntar . También puede agregar una recompensa para llamar más la atención sobre esta pregunta una vez que tenga suficiente reputación . - De la opinión
Respuestas:
Eso depende de lo que quieras decir. Si solo desea deshacerse de ellos, haga esto:
(Actualización: aparentemente también desea mantener los dígitos, use las segundas líneas en ese caso)
String alphaOnly = input.replaceAll("[^a-zA-Z]+",""); String alphaAndDigits = input.replaceAll("[^a-zA-Z0-9]+","");
o el equivalente:
String alphaOnly = input.replaceAll("[^\\p{Alpha}]+",""); String alphaAndDigits = input.replaceAll("[^\\p{Alpha}\\p{Digit}]+","");
(Todos estos se pueden mejorar significativamente al precompilar el patrón de expresiones regulares y almacenarlo en una constante)
O, con Guayaba :
private static final CharMatcher ALNUM = CharMatcher.inRange('a', 'z').or(CharMatcher.inRange('A', 'Z')) .or(CharMatcher.inRange('0', '9')).precomputed(); // ... String alphaAndDigits = ALNUM.retainFrom(input);
Pero si desea convertir caracteres acentuados en algo sensato que aún sea ascii, mire estas preguntas:
fuente
Estoy usando esto.
s = s.replaceAll("\\W", "");
Reemplaza todos los caracteres especiales de la cadena.
aquí
\ w: un carácter de palabra, abreviatura de [a-zA-Z_0-9]
\ W: un personaje que no es una palabra
fuente
Puede utilizar el siguiente método para mantener los caracteres alfanuméricos.
replaceAll("[^a-zA-Z0-9]", "");
Y si desea mantener solo los caracteres alfabéticos, use este
replaceAll("[^a-zA-Z]", "");
fuente
replaceAll("[^a-zA-Z0-9 ]", "");
Reemplazar cualquier carácter especial por
replaceAll("\\your special character","new character");
ej .: para reemplazar toda la aparición de * con espacios en blanco
replaceAll("\\*","");
* esta declaración solo puede reemplazar un tipo de carácter especial a la vez
fuente
string Output = Regex.Replace(Input, @"([ a-zA-Z0-9&, _]|^\s)", "");
Aquí se reemplazan todos los caracteres especiales excepto el espacio, la coma y el ampersand. También puede omitir el espacio, la coma y el ampersand mediante la siguiente expresión regular.
string Output = Regex.Replace(Input, @"([ a-zA-Z0-9_]|^\s)", "");
Donde Input es la cadena que necesitamos para reemplazar los caracteres.
fuente
Siguiendo el ejemplo de la respuesta de Andrzej Doyle , creo que la mejor solución es usar
org.apache.commons.lang3.StringUtils.stripAccents()
:package bla.bla.utility; import org.apache.commons.lang3.StringUtils; public class UriUtility { public static String normalizeUri(String s) { String r = StringUtils.stripAccents(s); r = r.replace(" ", "_"); r = r.replaceAll("[^\\.A-Za-z0-9_]", ""); return r; } }
fuente
Puede usar expresiones regulares básicas en cadenas para encontrar todos los caracteres especiales o usar clases de patrones y comparadores para buscar / modificar / eliminar cadenas definidas por el usuario. Este enlace tiene algunos ejemplos simples y fáciles de entender para expresiones regulares: http://www.vogella.de/articles/JavaRegularExpressions/article.html
fuente
Puede obtener unicode para ese carácter basura de la herramienta de mapa de caracteres en Windows PC y agregar \ u eg \ u00a9 para el símbolo de copyright. Ahora puede usar esa cadena con ese carácter basura en particular, no elimine ningún carácter basura, reemplácelo con unicode adecuado.
fuente
Para espacios, use "[^ az AZ 0-9]" este patrón
fuente
let name = name.replace(/[&\/\\#,+()$~%!.„'":*‚^_¤?<>|@ª{«»§}©®™ ]/g, '').toLowerCase();
fuente