2015-04-15 12 views
5

Ho numeri come questo che hanno bisogno di zero iniziali rimossi.regex a strip zeri iniziali trattati come stringa

Ecco quello che mi serve:

00000004334300343 ->4334300343

0003030435243 ->3030435243

Non riesco a capire questo fuori come io sono nuovo di espressioni regolari. Questo non funziona:

(^0) 

risposta

9

Sei quasi arrivato. Hai solo bisogno quantificatore:

str = str.replaceAll("^0+", ""); 

Sostituisce 1 o più occorrenze di 0 (. Questo è ciò che + quantificatore è per Allo stesso modo, abbiamo * quantificatore, che significa 0 o più), all'inizio della stringa (questo è dato dal caret - ^), con una stringa vuota.

+0

che non funziona qui: http: //www.regexr.it/ –

+0

@HorseVoice È possibile pubblicare il collegamento condiviso? –

+0

@HorseVoice ma funziona in Java: http://ideone.com/TblPQ7 e non è quello che volevi? – Pshemo

3

Se si conosce stringhe di input sono tutti contenenti cifre allora si può fare:

String s = "00000004334300343"; 
System.out.println(Long.valueOf(s)); 
// 4334300343 

Code Demo

Con la conversione al Long che eliminerà automaticamente tutti gli zeri iniziali.

+0

così. ignora gli zeri? –

+1

Sì, controlla anche la demo collegata. – anubhava

+0

per altre risposte, non abbiamo bisogno di escape charcter \\? –

1

Un'altra soluzione (potrebbe essere più intuitiva da leggere)

str = str.replaceFirst("^0+", ""); 

^ - corrispondere l'inizio di una linea di
0+ - abbinare il carattere zero cifre una o più volte

un elenco estenuante di pattern puoi trovare qui Pattern.

+0

puoi spiegare la tua risposta? –

1

la correttezza regex spogliare zeri è

str = str.replaceAll("^0+", ""); 

Questa espressione regolare corrisponderà 0 carattere quantitativo di one and more la stringa inizio. Non c'è motivo di preoccuparsi del metodo replaceAll, in quanto l'espressione regolare ha un carattere speciale ^ (input iniziale) che assicura che la sostituzione venga invocata una sola volta.

definitiva è possibile utilizzare Java build-in funzione per fare lo stesso:

String str = "00000004334300343"; 
long number = Long.parseLong(str); 
// outputs 4334300343 

Gli zeri iniziali verranno eliminati in modo automatico.

0

\b0+\B farà il lavoro. Vedere demo\b ancore il tuo partner a un confine di parola, che corrisponde a una sequenza di uno o più zeri 0+, e termina non in un limite di parola (per non elimina l'ultimo 0 nel caso in cui si hanno solo 00...000)

Problemi correlati