2013-07-07 16 views
14

ho suceeded con l'aiuto della community nella rimozione di valori numerici dall'input dell'utente, tuttavia, il mio codice qui sotto recupererà solo i caratteri alfa prima che la numerica che è stata rimossa:Java: la rimozione di valori numerici da stringa

import java.util.Scanner; 

public class Assignment2_A { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     Scanner firstname = new Scanner(System.in); 
     System.out.println("Please enter your first name:"); 
     String firstname1 = firstname.next(); 
     firstname1 = firstname1.replaceAll("[^A-Z]",""); 
     System.out.println(firstname1); 


     } 

} 

Ad esempio se input utente = S1234am, sto solo tornando indietro: S. Come posso recuperare i caratteri rimanenti nella stringa?

+1

u bisogno di sostituire le lettere minuscole, nonché –

risposta

6

L'espressione regolare [^A-Z] è attualmente configurata solo per conservare le lettere maiuscole. Potresti provare a sostituirlo con [^A-Za-z] per conservare anche le lettere minuscole.

+0

non funzionerà per i caratteri speciali come 'éèëàç'. –

+1

Infatti. Se l'obiettivo è davvero quello di rimuovere tutte le cifre, usare '\\ d' sarebbe meglio, ma il modo in cui è stato progettato attualmente suggerisce che l'obiettivo potrebbe essere semplicemente conservare' A-Za-z'. – Gian

+0

Gian, Grazie per il tuo aiuto. Ti darei un pollice in su ma a quanto pare sono troppo nuovo su questo sito per farlo. Grazie per il tuo tempo! – user2558595

34

Questo eliminerà tutte le cifre:

firstname1 = firstname1.replaceAll("\\d",""); 
0

tua espressione regolare:

[^A-Z] 

corrisponde a qualsiasi cosa che non è un lettera maiuscola.

Ciò significa che anche le lettere minuscole corrispondono.

Probabilmente si dovrebbe usare:

[^A-Za-z] 

come regex invece.

Si noti inoltre che questo non rappresenterà altro che ASCII. Potrebbe, o no, essere ciò che vuoi.

+0

Questo non funzionerà con caratteri speciali come "éèëàç". –

+0

Sì, lo so, ed è per questo che l'ho modificato per quello. – fge

+0

Grazie per il vostro tempo e competenza! – user2558595

15

È possibile utilizzare:

firstname1 = firstname1.replaceAll("[0-9]",""); 

Questo eliminerà tutti i valori numerici da String firstName1.

String firstname1 = "S1234am"; 
    firstname1 = firstname1.replaceAll("[0-9]",""); 
    System.out.println(firstname1);//Prints Sam 
1

Come rimuovere i valori numerici da una stringa:

per fare questo basterà

str.replaceAll("[^A-Za-z]",""); 

ma cosa succede se la stringa contiene personaggi come:

String str = "stackoverflow elenasys +34668555555 # Пивоварова Пивоварова հայեր հայեր አማሪኮ  አማሪኮ kiểm tra kiểmtra ตรวจสอบ ตรวจสอบ التحقق من التحقق من"; 

anche la maggior parte dei caratteri verrà rimossa, quindi questa è una scelta migliore:

str = str.replaceAll("[\\d.]", ""); 

per rimuovere tutti i valori numerici e ottenere come risultato:

stackoverflow elenasys + # Пивоварова Пивоварова հայեր հայեր አማሪኮ  አማሪኮ kiểm tra kiểmtra ตรวจสอบ ตรวจสอบ التحقق من التحقق من