2013-07-07 17 views
14

Ich habe mit Hilfe dieser Gemeinschaft bei der Beseitigung von numerischen Werten von Benutzereingaben suceeded jedoch mein Code unten wird die Alpha-Zeichen vor dem numerischen nur abgerufen werden, die entfernt wurde:Java: Entfernen numerische Werte von String

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


     } 

} 

Zum Beispiel, wenn Benutzereingabe = S1234am, bekomme ich nur zurück: S. Wie kann ich die restlichen Zeichen in der Zeichenfolge abrufen?

+1

u Kleinbuchstaben sowie –

Antwort

6

Ihr regulärer Ausdruck [^A-Z] ist derzeit nur zum Speichern von Großbuchstaben konfiguriert. Sie könnten versuchen, es durch [^A-Za-z] zu ersetzen, um die Kleinbuchstaben auch zu behalten.

+0

es nicht für Sonderzeichen funktionieren wird ersetzen müssen, wie 'éèëàç'. –

+1

In der Tat. Wenn das Ziel wirklich darin besteht, alle Ziffern zu entfernen, wäre die Verwendung von '\\ d' besser, aber die Art und Weise, wie es zur Zeit entworfen wurde, deutet darauf hin, dass das Ziel darin bestehen könnte, nur 'A-Za-z' beizubehalten. – Gian

+0

Gian, Vielen Dank für Ihre Hilfe. Ich würde Ihnen einen Daumen hoch geben, aber anscheinend bin ich auf dieser Seite zu neu dafür. Vielen Dank für Ihre Zeit! – user2558595

34

Dadurch werden alle Ziffern entfernen:

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

Ihre regex:

[^A-Z] 

alles Spiele, die kein Großbuchstaben ist.

Das bedeutet, dass alle Kleinbuchstaben übereinstimmen.

Sie sollten wahrscheinlich verwenden:

[^A-Za-z] 

als regex statt.

Beachten Sie auch, dass dies nichts anderes als ASCII berücksichtigt. Es kann sein oder nicht, was Sie wollen.

+0

Dies funktioniert nicht für Sonderzeichen wie 'éèëàç'. –

+0

Ja, ich weiß, weshalb ich das editiert habe. – fge

+0

Vielen Dank für Ihre Zeit und Ihr Fachwissen! – user2558595

15

können Sie verwenden:

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

Dadurch werden alle numerischen Werte von String firstName1 entfernen.

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

Wie numerische Werte aus einer Zeichenfolge entfernen:

dies zu tun, wird es

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

genug sein, aber was ist, wenn die Zeichenfolge Zeichen enthalten, wie:

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

Die meisten Zeichen werden ebenfalls entfernt, also ist dies eine bessere Option:

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

alle numerischen Werte zu entfernen und erhalten als Ergebnis:

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