Tengo una cadena con muchos caracteres especiales. Quiero eliminar todo eso, pero mantener los caracteres alfabéticos.Cómo reemplazar caracteres especiales en una cadena?
¿Cómo puedo hacer esto?
Tengo una cadena con muchos caracteres especiales. Quiero eliminar todo eso, pero mantener los caracteres alfabéticos.Cómo reemplazar caracteres especiales en una cadena?
¿Cómo puedo hacer esto?
Eso depende de lo que signifique. Si lo que desea es deshacerse de ellos, hacer esto:
(Actualización: Al parecer desea mantener dígitos, así, utilizar las segundas líneas en este 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}]+","");
(Todo esto puede ser mejorada significativamente por precompilar el patrón de expresión regular y almacenarla en una constante)
O, con Guava:
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 activar los caracteres acentuados en algo sensato que sigue siendo ascii, mirar a estas preguntas:
Gracias Floydit está funcionando bien. Pero hay un problema – Tanu
cuando estoy usando esta función también está eliminando todos los números. Pero no quiero que se eliminen los números. Solo quiero eliminar los caracteres especiales. Sugiere algo ... – Tanu
. Bien, dijiste que solo querías el alfabeto. Pero actualizaré mi respuesta en un minuto –
Puede usa expresiones regulares básicas en cadenas para encontrar todos los caracteres especiales o utilice clases de patrón y de emparejador 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
Estoy usando esto.
s = s.replaceAll("\\W", "");
Reemplaza todos los caracteres especiales de la cadena.
Aquí
\ w: Palabras carácter, la abreviatura de [a-zA-Z_0-9]
\ W: Un no-palabra carácter
Esto es bueno pero también elimina espacios –
¿Qué sucede si no quiero eliminar espacio? –
No funciona para . Cómo eliminar '<', '>', '\' caracteres? – Manoj
Puede obtener Unicode para esa basura carácter de la herramienta de mapa de caracteres en la PC de la ventana y agregar \ u por ejemplo \ u00a9 para el símbolo de copyright. Ahora puede usar esa cadena con ese carácter de basura en particular, no elimine ningún carácter basura pero reemplácelo con unicode apropiado.
string Output = Regex.Replace(Input, @"([ a-zA-Z0-9&, _]|^\s)", "");
Aquí todos los caracteres especiales, excepto espacio, coma, y se sustituyen signo. También puede omitir el espacio, la coma y el símbolo por la siguiente expresión regular.
string Output = Regex.Replace(Input, @"([ a-zA-Z0-9_]|^\s)", "");
Donde Entrada es la cadena que necesitamos para reemplazar los caracteres.
Mira este hilo: http://stackoverflow.com/questions/3438854/replace-unicode-control-characters-existing-solution –