2012-02-04 15 views

risposta

12
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 _.

+0

Riferimento di regexp Java primario: [java.util.regex.Pattern] (https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html) – etech

0

di questo codice:

String s = "Test[]" 
s = s.replaceAll("["); 
s = s.replaceAll("]"); 
+2

come mantenere le parentesi ... –

0

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 (\\[\\]\\(\\)])

+0

L'uso di '\ w' non lo farà, dal momento che include es il carattere '_' - un carattere non valido in base alla domanda. –

+0

forse si è semplicemente dimenticato di underscore? – shift66

+0

@ ÓscarLópez - non nel mio Java e in locale non lo fa. –

3

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[]()".

+3

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

+0

proprio come una FYI, non devi sfuggire alla parentesi. –

+0

@BrianRoach Grazie, risolto. –

8

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); 
+5

Non c'è bisogno di essere snippy. È una libreria Java, niente di più, e una pratica a questo. –

+0

Non è così che usi CharMatcher.or(), basta un solo argomento – Stephan

0

È 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; 
    } 
Problemi correlati