2009-11-26 14 views

risposta

11
System.out.println("  AA  BB".replaceAll("\\s+", " ").trim()); 

uscita:

Nota: A differenza di altre soluzioni qui, questa sostituisce anche una singola scheda con un singolo spazio. Se non si dispone di schede è possibile utilizzare "{2,}", invece, che sarà ancora più veloce:

System.out.println("  AA  BB".replaceAll(" {2,}", " ").trim()); 
+1

Grazie mille .. :) –

7

sostituire due o più spazi "\\s{2,}" da un singolo spazio " " e fare un trim() poi a sbarazzarsi del spazi iniziali e finali, come avete dimostrato nel 1 ° esempio.

output = input.replaceAll("\\s{2,}", " ").trim(); 
2
s = s.replaceAll("\\s+", " ").trim(); 
0

Non ci sono risposte corrette qui, ad esempio:

s = s.replaceAll("\\s+", " ").trim(); 

Ma Penso che sia anche importante scegliere la domanda corretta. Invece di chiedere di tagliare un String usando le espressioni regolari, perché non chiedere semplicemente di tagliare lo String e consentire alle persone che rispondono di mostrarti la migliore strategia?

Potrebbero esserci modi migliori per comprimere gli spazi piuttosto che usare un'espressione regolare. Ci sono certamente altri modi.

+0

La domanda è stata modificata. Ora potresti per favore mostrarmi un modo migliore? Grazie. –

+0

Non volevo insinuare che esistesse un modo indiscutibilmente migliore. Se ne avessi saputo uno certamente te lo avrei detto senza insistere sul fatto che la domanda fosse cambiata per prima. Volevo solo sottolineare che era possibile che tu stessi limitando le risposte sulla base di un'ipotesi della strategia corretta. Direi che, a meno che non si abbiano motivi di prestazione molto forti per voler sperimentare alternative, la via delle regex è probabilmente quello che farei. – roryparle

Problemi correlati