# String auf Format überprüfen



## Allrounder93 (22. Okt 2013)

Nabend Allemiteinander,

ich komme gerade nicht weiter...
Ich möchte überprüfen, ob der User folgende Eingabe getätig hat...

.jpg oder .mpg usw.

also ob er eine Eingabe in dem Format ".###" getätig hat.

Hat jemand eine Idee, wie ich dies überprüfe?

Gruß Chris


----------



## eRaaaa (22. Okt 2013)

Die String Klasse hat entsprechende Methoden....wie z.B. endsWith(String Suffix)


----------



## Allrounder93 (22. Okt 2013)

Ich meinte nicht, das Abgefragt werden soll ob .jpg usw. sondern, dass die Eingabe .### ist...
also ich habs falsch verstanden oder mein kleiner Test leif falsch...

```
String abc = "ahdfasf.bcd";
		System.out.print(abc.endsWith(".###"));
```


----------



## Ikaron (22. Okt 2013)

Versuch mal:

```
Pattern pattern = Pattern.compile("^\\.(\\w{3})$"); // Ich hoffe das Pattern stimmt so...
// Intern: ^ + \. + ( + \w{3} + ) + $
// ^: Muss mit dem Pattern anfangen
// \.: Punkt
// (): Alles in Klammern wird in "groups" gespeichert, siehe unten. Nur nötig, wenn du das nach dem Punkt abfragen willst z.B.
// \w{3}: 3 Buchstaben
// $: Muss mit dem Pattern aufhören

Matcher m = pattern.matcher(inputString);

if(m.matches()) {
    
    // => Korrektes Format
    // Die Endung kann jetzt aufgrund der runden Klammern im Pattern mit m.group(1) abgefragt werden
} else
    // Falscher Input
```


----------



## eRaaaa (22. Okt 2013)

Ikaron hat gesagt.:


> // \w{3}: 3 Buchstaben


\w steht nicht nur für kleine u. große Buchstaben sondern auch Zahlen 0 bis 9 und der Unterstrich
Da er anscheinend auch den ganzen String abfragen will (String abc = "ahdfasf.bcd"; ) fehlt der vordere Teil.
Vereinfacht vlt. einfach compile(".+?\\.([a-z]{3})"); bzw. [a-zA-Z] ???:L


----------



## Rubber (23. Okt 2013)

Reicht nicht einfach

```
String eingabe;
String[] hinten = eingabe.split(".");

if(hinten.length() == 3){
  System.out.println("Alles ok");
}else{
  //Do some other Stuff
}
```

Hoffe das war jetzt richtig - denke aber meine Idee kommt zumindest durch ^^
Ist schon spät.


----------



## eRaaaa (23. Okt 2013)

Rubber hat gesagt.:


> Reicht nicht einfach
> 
> ```
> String eingabe;
> ...



Also mit split(".") splittest du an jedem Zeichen, du wolltest wohl eher split("\\.").
Und du meintest dann wohl eher hinten[1].length(). Wobei Dateinamen auch abc.def.jpg heißen könnten, dann müsste in deiner Lösung erst die Arraylänge ermittelt werden und dann vom letzten Element length() aufgerufen werden.
Geht sicherlich (evtl.) auch, gibt mehrere Lösungen, wie ich oben schon anmerkte evtl. auch einfach mit Methoden der String-Klasse

```
string.substring(string.lastIndexOf('.')+1));
```
auch mit dem Regex string.matches(".+?\\.([a-z]{3})") z.B. dann braucht man kein Pattern/Matcher in dem Fall.
Oder man greift auf den Character length-4 zu und schaut obs ein Punkt ist string.charAt(string.length()-4)
......
Es gibt viele Möglichkeiten, der TO wäre bestimmt selbst auf eine für ihn zufriedenstellende gekommen wenn er sich mit der API Doc beschäftigt hätte, worauf ich hinaus wollte oben


----------



## Rubber (23. Okt 2013)

Danke für die korrektur.
Ich sollte ab einer gewissen Zeit entweder den Code erst testen, oder es bleiben lassen 

Wollte nur aufzeigen, dass es mehrere wege gibt.


----------

