2012-11-02 16 views
5

Ich bin neu in Java-Programmierung und ich brauche Hilfe. Erstellen Sie eine Tabelle von String und der Benutzer gibt die Größe an. Anschließend gibt der Benutzer String aus. Ich möchte die Zeichen drucken, aber ohne die Zeichen, die keine Buchstaben des Alphabets sind (zB Java. 4 -!> Java, ja /, va -.> Java)Zeichenfolge enthält nur Alphabete

public static void main (String[] args) { 

String[] x = new String[size]; 
int size; 
String str= ""; 

BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); 

System.out.print("Give me size: "); 
size = Integer.parseInt(input.readLine()); 


    for(int i=0; i<size; i++){ 
    System.out.print("Give me a String: "); 
    str = input.readLine(); 
    x[i]=str; 
    } 


} 

Suche auf das Internet für diesen Code:

if (str.matches("[a-zA-Z]")){ 
System.out.println(str); 
} 
+0

Da Sie neu Hier wäre es gut für Sie zu wissen, dass Sie [Antworten akzeptieren] (http://meta.stackexchange.com/a/5235/182862) aus den Beiträgen Ihrer Frage auswählen sollten. –

Antwort

3

Da Sie in der Programmierung neu sind und wollen nicht in der RegEx Welt (noch) zu beteiligen, können Sie eine Methode erstellen, die nur ein String mit Buchstaben zurück:

public String getStringOfLettersOnly(String s) { 
    //using a StringBuilder instead of concatenate Strings 
    StringBuilder sb = new StringBuilder(); 
    for(int i = 0; i < s.length(); i++) { 
     if (Character.isLetter(s.charAt(i))) { 
      //adding data into the StringBuilder 
      sb.append(s.charAt(i)); 
     } 
    } 
    //return the String contained in the StringBuilder 
    return sb.toString(); 
} 
+0

Vielen Dank !! Es; s Arbeit :) – Mary

0

Sie können überprüfen, ob ein string nur alaphabets mit regex hat. unten ist der Beispielcode

String word = "java"; 
Pattern pattern = Pattern.compiles("[a-zA-Z]+"); 
Matcher matcher = pattern.matcher(word); 
System.out.println(pattern.find()); 

Oder Sie String.matches(regex) von String API lesen über REGEX in Java

4

Sie können mit einem sehr einfachen regulären Ausdruck dies tun können: s/[^A-z]//g. Dies ersetzt nichts für alle Zeichen in der Zeichenfolge, die nicht im Bereich A-z liegen, der alle Buchstaben (Groß- und Kleinbuchstaben) enthält. Tun Sie einfach new_string = old_string.replaceAll("[^A-z]", "");.

+1

Als Reaktion auf die vorgeschlagene Änderung werden '' new_string'' und '' old_string'' eliminiert und eine einzige Variable verwendet: Die Einbeziehung der beiden Variablen macht die Absicht klarer, und es ist oft vorzuziehen, solche Werte als unveränderlich und nicht neu zuzuweisen auf die gleiche Variable mehrmals, auch im Produktionscode. – syrion

Verwandte Themen