sto usando removeNumbers
per rimuovere tutti i numeri in una stringa con l'espressione regolare
"(^|)\\d+($|(\\d+)+($|)|)"
Regex per trovare i numeri in una stringa
Ecco il codice:
public class Regex {
private static String removeNumbers(String s) {
s = s.trim();
s = s.replaceAll(" +", " ");
s = s.replaceAll("(^|)\\d+($|(\\d+)+($|)|)", " ");
return s.trim();
}
public static void main(String[] args) {
String[] tests = new String[] {"123", "123 456 stack 789", "123 456 789 101112 131415 161718 192021", "stack 123 456 overflow 789 com", "stack 123 456 overflow 789", "123stack 456", "123 stack456overflow", "123 stack456", "123! @456#567"};
for (int i = 0; i < tests.length; i++) {
String test = tests[i];
System.out.println("\"" + test + "\" => \"" + removeNumbers(test) + "\"");
}
}
}
uscita:
"123" => ""
" 123 " => ""
"123 456 stack 789" => "stack"
"123 456 789 101112 131415 161718 192021" => ""
"stack 123 456 overflow 789 com" => "stack overflow com"
"stack 123 456 overflow 789" => "stack overflow"
"123stack 456" => "123stack"
"123 stack456overflow" => "stack456overflow"
"123 stack456" => "stack456"
"123! @456#567" => "123! @456#567"
C'è un modo migliore per farlo?
Edit:
Come suggerito da @ mbomb007 nella sua precedente risposta, la regex "(|^)[\\d ]+(|$)"
funziona così:
private static String removeNumbers(String s) {
s = s.trim();
s = s.replaceAll(" +", " ");
s = s.replaceAll("(|^)[\\d ]+(|$)", " ");
return s.trim();
}
La mia risposta era sbagliata, ma ora l'ho risolto. Ho pubblicato un collegamento a una versione web che esegue la regex contro i casi di test. – mbomb007
L'output è corretto? Se sì e stai cercando un modo migliore per riscrivere il tuo codice, sembra che la tua domanda debba essere posta su http://codereview.stackexchange.com/. – Pshemo
Le stringhe in ingresso possono iniziare o finire con spazi? – Pshemo