String auf Format überprüfen

Allrounder93

Aktives Mitglied
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
 
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...
Java:
		String abc = "ahdfasf.bcd";
		System.out.print(abc.endsWith(".###"));
 
Versuch mal:
Java:
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
 
Zuletzt bearbeitet:
// \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
 
Zuletzt bearbeitet:
Reicht nicht einfach
Java:
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.
 
Zuletzt bearbeitet:
Reicht nicht einfach
Java:
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.

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
Java:
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 😳
 
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.
 

Zurück
Oben