Non ho idea di come rimuovere caratteri non validi da una stringa in Java. Sto cercando di rimuovere tutti i caratteri che non sono numeri, lettere o() []. Come posso fare questo?Come rimuovere caratteri non validi da una stringa?
Grazie
Non ho idea di come rimuovere caratteri non validi da una stringa in Java. Sto cercando di rimuovere tutti i caratteri che non sono numeri, lettere o() []. Come posso fare questo?Come rimuovere caratteri non validi da una stringa?
Grazie
String foo = "this is a thing with & in it";
foo = foo.replaceAll("[^A-Za-z0-9()\\[\\]]", "");
Javadocs sono tuo amico. Le espressioni regolari sono anche i tuoi amici.
Edit:
Stando SIAD, questo è solo per l'alfabeto latino; è possibile regolare di conseguenza. \\w
può essere utilizzato per a-zA-Z
per indicare un carattere di "parola" se questo funziona per il tuo caso anche se include _
.
di questo codice:
String s = "Test[]"
s = s.replaceAll("[");
s = s.replaceAll("]");
come mantenere le parentesi ... –
myString.replaceAll("[^\\w\\[\\]\\(\\)]", "");
metodo replaceAll prende un'espressione regolare come primo parametro e sostituisce tutte le partite nella stringa. Questa espressione regolare corrisponde a tutti i caratteri che non sono cifre, lettera o di sottolineatura (\\w
) e bretelle è necessario (\\[\\]\\(\\)]
)
L'uso di '\ w' non lo farà, dal momento che include es il carattere '_' - un carattere non valido in base alla domanda. –
forse si è semplicemente dimenticato di underscore? – shift66
@ ÓscarLópez - non nel mio Java e in locale non lo fa. –
Prova questa:
String s = "123abc&^%[]()";
s = s.replaceAll("[^A-Za-z0-9()\\[\\]]", "");
System.out.println(s);
Quanto sopra rimuovere i caratteri "&^%"
nella stringa di esempio, lasciando in s
solo "123abc[]()"
.
Dipende dalla tua definizione di" numeri "," lettere "e così via. Di certo non mi aspetterei che Straße sia cambiato in 'Strae'. Diamine, direi che è una soluzione piuttosto "ingenua" .. mi dispiace 'nave';) – Voo
proprio come una FYI, non devi sfuggire alla parentesi. –
@BrianRoach Grazie, risolto. –
Utilizzando Guava, e quasi certamente più efficiente (e più leggibile) di espressioni regolari:
CharMatcher desired = CharMatcher.JAVA_DIGIT
.or(CharMatcher.JAVA_LETTER)
.or(CharMatcher.anyOf("()[]"))
.precomputed(); // optional, may improve performance, YMMV
return desired.retainFrom(string);
Non c'è bisogno di essere snippy. È una libreria Java, niente di più, e una pratica a questo. –
Non è così che usi CharMatcher.or(), basta un solo argomento – Stephan
È possibile rimuovere le offerte speciali caratteri dalla stringa/URL o qualsiasi parametri di richiesta avete ottenere dal lato utente
public static String removeSpecialCharacters(String inputString){
final String[] metaCharacters = {"../","\\..","\\~","~/","~"};
String outputString="";
for (int i = 0 ; i < metaCharacters.length ; i++){
if(inputString.contains(metaCharacters[i])){
outputString = inputString.replace(metaCharacters[i],"");
inputString = outputString;
}else{
outputString = inputString;
}
}
return outputString;
}
Riferimento di regexp Java primario: [java.util.regex.Pattern] (https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html) – etech