# auf ASCII Zeichen prüfen



## l00P (19. Feb 2006)

hallo zusammen!

gibt es eine Funktion mit der ich kontrollieren kann ob ein String ausschließlich aus ASCII Zeichen besteht?

dankeschön
lg


----------



## MPW (19. Feb 2006)

hm, glaube nicht, aber das sollte man doch schnell selber machen koennen:

 - alle Asciis in ein Array
 - jeden Buchstaben des String darauf pruefen, ob er in dem Array enthalten ist.


----------



## Fry (19. Feb 2006)

Hallo!

du kannst jeden einzelnen char nach int konvertieren, dann muss das Ergebnis zwischen 000 und 255 liegen.

Fry


----------



## looP (19. Feb 2006)

hmmm das müßte doch besser gehen wenn ich jedes Zeichen im String auf den decimal Bereich zwischen 32 und 127 prüfe welches der ASCII BEReich ist oder?

Wie kriege ich denn von einem char den Decimalwert raus?!?!?

mal sehen wie ich das hinbekomme...

lg


----------



## byte (19. Feb 2006)

Fry hat gesagt.:
			
		

> du kannst jeden einzelnen char nach int konvertieren, dann muss das Ergebnis zwischen 000 und 255 liegen.



Und woher weisst Du dann, dass es sich dabei um ASCII Zeichen handelt und nicht etwa um Zeichen einer anderen 8-Bit Kodierung?


----------



## L-ectron-X (19. Feb 2006)

```
public class ASCIIChecker {
  private String ascii;

  public ASCIIChecker() {
    char[] cArr = new char[256];
    
    for(int i = 0; i < cArr.length; i++) {
      cArr[i] = (char)i;
    }
    
    ascii = new String(cArr);
  }
  
  public boolean isASCIINorm(String str) {
    for(int i = 0, j = str.length(); i < j; i++) {
      if(!ascii.contains(String.valueOf(str.charAt(i))))
        return false;
    }
    return true;
  }
  
  //eine Methode zum Testen
  public static void main(String[] args) {
    System.out.println("ASCIIChecker-Test (Programmende mit Enter)\n");
    
    ASCIIChecker checker = new ASCIIChecker();
    java.io.BufferedReader reader = new java.io.BufferedReader(
        new java.io.InputStreamReader(System.in));

    String str = null;
    while(str == null || !str.equals("")) {
      System.out.print("\nPruef-String: ");

      try {
        str = reader.readLine();
      }
      catch(java.io.IOException e) {
        System.out.println("Fehler beim Lesen von der Tastatur!");
      }

      System.out.println(checker.isASCIINorm(str));
    }
  }
}
```


----------



## l00P (20. Feb 2006)

. danke, hab ich so verwenden können


----------



## thE_29 (20. Feb 2006)

Ähm...

Character Klasse??


Desweiteren:


```
public class ASCIIChecker {
  
  public ASCIIChecker() 
  {}
 
  public boolean isASCIINorm(String str) {
    for(int i = 0; i != str.length(); i++) {
      if(str.charAt(i) < 0 || str.charAt(i) > 255)
       return false;
    }
    return true;
  }
```


Ist kürzer


----------



## L-ectron-X (20. Feb 2006)

Stimmt, schöne Lösung. :toll:  Ich habe ja auch nicht Anspruch auf Perfektion gehegt, sondern wollte lediglich eine Vorlage anbieten.
Übrigens, ist dein Code in Zeile 7 auch nicht ganz perfekt. Da fehlt ein Semiolon. :bae:  :wink:


----------



## thE_29 (20. Feb 2006)

Uiui!

Schon drinnen 

Eigentlich könnte man es ja auch noch static machen...

Und dann vorher mit str.charAt(x) den in eine Variable laden, somit fallen 2 Aufrufe von charAt auch wieder weg (also 1 fällt weg) und sollte dann auch schneller sein  (um maybe 1 ms :bae:
Aber wers braucht


----------



## Bleiglanz (21. Feb 2006)

```
str.matches("\\p{ASCII}*");
```
sollte es auch tun

prüft aber nur bis 127, es gibt keinen ASCII für 128-255??


----------

