String an dritter und sechster Stelle auf dot prüfen

Henig

Mitglied
Hallöchen liebe leute ich hab mal wieder ein kleines programmiertechnisches Problem =D
undzwas will ich einen String an 3ter und 6ter stelle auf einen punkt prüfen
(also allgemeines Datumsvormat xx.xx.xxxx) die if-anweisung ist ganz klar
Code:
if (String.stelleXvonString != "." || String.stelleXvonString != "."{
System.out.println("Fehler beim Eingeben vom Datum!")
}

frage ist nun, wie ich nachschauen kann, welches zeichen sihc an 3ter Stelle befindet
ich danke allen antwortenden, die das kurz und gut erklären können =)

MfG
Henig
 
Hi!

Sieh dir mal die java dokumentation zur Klasse String an. Strings haben eine Funktion
charAt(int index), mit der du das Zeichen an der entsprechenden Stelle lesen kannst...

Gruß,

Robert
 
Moin,

Du kannst mit "charAt" lösen !

Bsp.:
Java:
String strText = "123.456";
if( strText.charAt( 3 ) == '.' )
{
    // irgendwas
}

Gruß
Klaus
 
oder gleich auf richtiges Format prüfen mit matches.
Dies währe ein vereinfachter regulärer Ausdruck, der prüft dass 2 Ziffern gefolgt von einem punkt, 2 Ziffern, noch einem und zum Schluss 4 Ziffern im String vorhanden sind
\A\d{2}\.\d{2}\.\d{4}\Z


Java:
String pattern = "\\A\\d{2}\\.\\d{2}\\.\\d{4}\\Z";
if( strText.mathces(pattern) {
 
ahhaaa ^^
danke ich hab die ganze zeit geschaut ob es irgentwo eine get...(int) finde aber das war dann nix ^^

super funktioniert einwandfrei =)
 
Die Klasse SimpleDateFormate könnte an dieser Stelle auch sehr Hilfreich sein.
Denn diese kann dir aus dem eingegeben String sofort ein Date machen.
Klappt das parsen (umwandeln) nicht, ist auch das Format falsch angegeben.
Somit hast du 2 Fliegen mit einer Klappe geschlagen :-)

Hier ein Beispiel Code:
Java:
package de.tutorials.johannes7146;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleDateFormateExample {

    /**
     * @author Johannes Kleeschulte
     * @param args
     */
    public static void main(String[] args) {
        //String der überprüft werden soll
        String eingabe = "13.0f2.2009";

        //Im Konstruktor kannst du das Format angeben
        /*
         * d = Tag des Monats 
         * M = Monat 
         * y = Jahr 
         * s = Sekunden 
         * m = minuten 
         * Stunden kannst du mit h und H angeben. entspricht endeweder der 12Stunden schreibweise oder der 24
         * Stunden schreibweise wierum genau weiß ich grad nicht
         */
        SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");

        Date datum;
        try {
            //String in Datum parsen
            datum = dateFormat.parse(eingabe);
            System.out.println("Parsen erfolgreich");
        } catch (ParseException e) {
            //Falls das parsen fehlschlägt landers du hier und kannst darauf reagieren
            System.out.println("Datum bitte im Format TT.MM.JJJJ angeben");
        }
    }

}
 
Zuletzt bearbeitet:
es hat sich ein neues Problem aufgetan ...
Ich mache in dem jFrame, in dem ich dieses Datum eingeben lasse, den versuch alles eingegebene in ne Access2007 DB zu schreiben...

der will, dass ich das so mache:
Code:
#xx/xx/xxxx#
wie ich die '#' dahin bekomme ist ja klar wie kloßbrühe, ABER ich bekomme die '.' nicht in '/' umgewandelt... habs bisher mit
Code:
string.replace('.' , '/');
versucht aber das geht ja mal garnicht xD
genauso wenig wie
Code:
string.charAt(3) = '/';
(ich weiß ja wo ich meine Punkte stehen habe also muss ich ja den String nicht prüfen und ändern sondern kann drauf kos ändern wie ich lustig bin
 
Java:
package de.tutorials.johannes7146;

public class Replace {

    /**
     * @param args
     */
    public static void main(String[] args) {
        String eingabe = "02.05.2009";
        String ausgabe = eingabe.replace(".", "/");
        System.out.println(ausgabe);
        

    }

}
eingabe.replace(".", "/"); tauscht nicht die die Buchstaben in dem string sondern gibt einen neuen String zurück !
 
Machs doch so: :)
Code:
String date = "04.09.2009";
char [] tmp = date.toCharArray();
if(tmp[2] == '.' && tmp[5]=='.'){
    tmp[2] = '/';
    tmp[5] = '/';
}
date = new String(tmp);
Oder so wie Johannes! :D
 
Zuletzt bearbeitet:
jo danke vielmals funktioniert beides =)
ABER du hast da nen kleinen Fehler... 3te und 6te stelle sind im Array 2 und 5 wegen 0-start undso ;)

#Thema Erledigt ^^
 
Zurück