manejo - operaciones con cadenas en java
Reemplazar todos los caracteres no alfanumĂ©ricos con cadenas vacĂas (9)
Intenté usar esto pero no funcionó-
return value.replaceAll("/[^A-Za-z0-9 ]/", "");
Debe tener en cuenta que [^a-zA-Z]
reemplazará los caracteres que no estén en el rango de caracteres AZ / az. Eso significa caracteres especiales como é
, ß
etc. o caracteres cirílicos, y tales serán eliminados.
Si el reemplazo de estos caracteres no es deseado, use clases de caracteres predefinidas en su lugar:
someString.replaceAll("[^//p{IsAlphabetic}^//p{IsDigit}]", "");
PS: /p{Alnum}
no logra este efecto, actúa igual que [A-Za-z0-9]
.
Hice este método para crear nombres de archivo:
public static String safeChar(String input)
{
char[] allowed = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_".toCharArray();
char[] charArray = input.toString().toCharArray();
StringBuilder result = new StringBuilder();
for (char c : charArray)
{
for (char a : allowed)
{
if(c==a) result.append(a);
}
}
return result.toString();
}
Las expresiones regulares de Java no requieren que coloque una barra inclinada ( /
) o cualquier otro delimitador alrededor de la expresión regular, a diferencia de otros lenguajes como Perl, por ejemplo.
Método simple:
public boolean isBlank(String value) {
return (value == null || value.equals("") || value.equals("null") || value.trim().equals(""));
}
public String normalizeOnlyLettersNumbers(String str) {
if (!isBlank(str)) {
return str.replaceAll("[^//p{L}//p{Nd}]+", "");
} else {
return "";
}
}
También puedes probar esta expresión regular más simple:
str = str.replaceAll("//P{Alnum}", "");
Tratar
return value.replaceAll("[^A-Za-z0-9]", "");
o
return value.replaceAll("[//W]|_", "");
Utilice [^A-Za-z0-9]
.
Nota: eliminó el espacio ya que normalmente no se considera alfanumérico.
public static void main(String[] args) {
String value = " Chlamydia_spp. IgG, IgM & IgA Abs (8006) ";
System.out.println(value.replaceAll("[^A-Za-z0-9]", ""));
}
salida: ChlamydiasppIgGIgMIgAAbs8006
Github: https://github.com/AlbinViju/Learning/blob/master/StripNonAlphaNumericFromString.java
return value.replaceAll("[^A-Za-z0-9 ]", "");
Esto dejará espacios intactos. Supongo que eso es lo que quieres. De lo contrario, elimine el espacio de la expresión regular.