# split() mit komma/punkt funktioniert nicht



## gladiator09 (21. Mai 2008)

hey leute!

bei mir funktioniert das nicht! die variable datum ist z.b. "21.05.2008", aber das array getrennt hat immer die länge 0!


```
String[] getrennt = datum.split(".");
```

danke,
gladiator


----------



## SlaterB (21. Mai 2008)

ein ganzes Programm zu posten wäre doch nicht schwer..

. ist ein RegEx-Sonderzeichen


```
public class Test
{
    public static void main(String[] args)
        throws Exception
    {
        String datum = "1.2";
        String[] getrennt = datum.split("\\.");
        System.out.println(Arrays.toString(getrennt));
    }
}
```


----------



## ms (21. Mai 2008)

Die Split-Methode verlangt einen regulären Ausdruck.
Der Punkt ist in regexp ein reservierter Ausdruck.

Auch auf die Gefahr hin, dass ich mich mit meinen regexp-(nicht)wissen hier blamiere.
Probier mal "\\."

edit: Zu langsam

ms


----------



## ARadauer (21. Mai 2008)

willst du ein Datum aus einem String machen?


```
SimpleDateFormat f = new SimpleDateFormat("dd.mm.yyyy");
    Date d = f.parse("21.05.2008");
```

ist vielleicht die bessere lösung


----------



## gladiator09 (21. Mai 2008)

ok, das funktioniert, danke...

aber andere frage: welche konstante in Calendar steht für den wochentag (also 0-6)?? denn DAY_OF_WEEK gibt mir beim 21.05.2008 den int-wert 7 zurück, obwohl heute mittwoch ist, also wie kommt der auf 7?

lg,
gladiator


----------



## SlaterB (21. Mai 2008)

immer den Code dazu posten.. du gibst wahrscheinlich diese Konstante selber aus, nicht den Wert dazu..


```
public class Test
{
    public static void main(String[] args)
        throws Exception
    {
        Calendar c = new GregorianCalendar();
        for (int day = 1; day < 28; day++)
        {
            c.set(Calendar.DATE, day);
            System.out.println(c.get(Calendar.DAY_OF_WEEK) + " - " + c.getTime());
        }
    }
}
```
geht doch..


----------



## Niki (21. Mai 2008)

weil DAY_OF_WEEK eine Konstante zurück liefert. Willst du auf Mittwoch prüfen geht das so:


```
if(cal.get(Calendar.DAY_OF_WEEK) == Calendar.WEDNESDAY){

}
```


----------



## gladiator09 (21. Mai 2008)

nein nein, ich will nicht auf mittwoch prüfen!

ich will, dass wenn ich jetzt z.b. einen GregorianCalendar auf 21.05.2008 habe, dann will ich mit einer konstanten den int-wert für einen wochentag bekommen!

also ich weiß nicht ob der mit sonntag oder montag beginnt, aber auf jeden fall in der art: montag = 0, dienstag = 1, mittwoch = 2, .....

also wenn ich die konstante DAY_OF_WEEK ausgebe und der tag ist mittwoch, dann kann der doch nicht 7 zurückgeben?!

lg


----------



## Niki (21. Mai 2008)

Ich hab mir mal die Werte angeschaut, er müsste für Sonntag 1 und für Mittwoch 4 zurück geben. Mach das:

```
System.out.println(cal.get(Calendar.DAY_OF_WEEK));
```


----------



## gladiator09 (21. Mai 2008)

komisch, wenn ich das hier ausführe mit dem datum "21.05.2008", dann bekomm ich diese ausgabe:


```
public int getIntVomDatum(String datum)
    {
        String[] getrennt = datum.split("\\.");
        System.out.println(Integer.parseInt(getrennt[0]));
        System.out.println(Integer.parseInt(getrennt[1]));
        System.out.println(Integer.parseInt(getrennt[2]));        
        GregorianCalendar gc = new GregorianCalendar(Integer.parseInt(getrennt[2]), Integer.parseInt(getrennt[1]), Integer.parseInt(getrennt[0]));
        Date d = gc.getTime();
        System.out.println(d.getDay()+"."+d.getMonth()+"."+d.getYear());
        return gc.get(Calendar.DAY_OF_WEEK);
    }
```

Ausgabe:

21
5
2008
6.5.108

return-wert: 7

lg


----------



## SlaterB (21. Mai 2008)

edit: siehe nächstes Post


----------



## Niki (21. Mai 2008)

ja, weil du als Monat 5 übergibst. die Monate beginnen aber bei 0, du willst also den 21. *JUNI* und das ist ein Samstag, also 7


----------



## gladiator09 (21. Mai 2008)

ok, also monat-1 und mit dem jahr auch was??

wenn ich jahr so lasse und nur monat-1 nehme, dann bekomm ich 6 als rückgabewert!


----------



## gladiator09 (6. Jun 2008)

wei jetzt jemand wie das geht? bei mir hats da irgendwas...

angenommen ich habe 3 datenfelder (int tag, int monat und int jahr)...

ich will jetzt einfach einen gregoriancalendar von den drei werten erstellen und mir dann den wochentag von 0-6 ausgeben lassen!

bei mir haut das irgendwie nicht hin! wäre nett wenn mir das jemand zeigen könnte 

lg,
alex


----------



## ARadauer (6. Jun 2008)

vielleicht hilft das

aus der Calendar Klasse

```
/**
     * Value of the {@link #DAY_OF_WEEK} field indicating
     * Sunday.
     */
    public final static int SUNDAY = 1;

    /**
     * Value of the {@link #DAY_OF_WEEK} field indicating
     * Monday.
     */
    public final static int MONDAY = 2;

    /**
     * Value of the {@link #DAY_OF_WEEK} field indicating
     * Tuesday.
     */
    public final static int TUESDAY = 3;

    /**
     * Value of the {@link #DAY_OF_WEEK} field indicating
     * Wednesday.
     */
    public final static int WEDNESDAY = 4;

    /**
     * Value of the {@link #DAY_OF_WEEK} field indicating
     * Thursday.
     */
    public final static int THURSDAY = 5;

    /**
     * Value of the {@link #DAY_OF_WEEK} field indicating
     * Friday.
     */
    public final static int FRIDAY = 6;

    /**
     * Value of the {@link #DAY_OF_WEEK} field indicating
     * Saturday.
     */
    public final static int SATURDAY = 7;

    /**
     * Value of the {@link #MONTH} field indicating the
     * first month of the year.
     */
    public final static int JANUARY = 0;

    /**
     * Value of the {@link #MONTH} field indicating the
     * second month of the year.
     */
    public final static int FEBRUARY = 1;

    /**
     * Value of the {@link #MONTH} field indicating the
     * third month of the year.
     */
    public final static int MARCH = 2;

    /**
     * Value of the {@link #MONTH} field indicating the
     * fourth month of the year.
     */
    public final static int APRIL = 3;

    /**
     * Value of the {@link #MONTH} field indicating the
     * fifth month of the year.
     */
    public final static int MAY = 4;

    /**
     * Value of the {@link #MONTH} field indicating the
     * sixth month of the year.
     */
    public final static int JUNE = 5;

    /**
     * Value of the {@link #MONTH} field indicating the
     * seventh month of the year.
     */
    public final static int JULY = 6;

    /**
     * Value of the {@link #MONTH} field indicating the
     * eighth month of the year.
     */
    public final static int AUGUST = 7;

    /**
     * Value of the {@link #MONTH} field indicating the
     * ninth month of the year.
     */
    public final static int SEPTEMBER = 8;

    /**
     * Value of the {@link #MONTH} field indicating the
     * tenth month of the year.
     */
    public final static int OCTOBER = 9;

    /**
     * Value of the {@link #MONTH} field indicating the
     * eleventh month of the year.
     */
    public final static int NOVEMBER = 10;

    /**
     * Value of the {@link #MONTH} field indicating the
     * twelfth month of the year.
     */
    public final static int DECEMBER = 11;
```
juni ist 5 (eins zu wenig) und freitag ist 6 (eins zu viel)
tja, wenn mans weiß


```
GregorianCalendar gc = new GregorianCalendar(2008, Calendar.JUNE, 6); 
  Date d = gc.getTime(); 
  System.out.println(gc.get(Calendar.DAY_OF_WEEK)); 
  System.out.println(Calendar.FRIDAY);
```
6.6.2008 ist ein freitag! Geil heute ist FREITAAAAAAAAAAAG!!!!!


----------



## ARadauer (6. Jun 2008)

vielleicht stellt sich jetzt die frage: "wie komm ich an die sourcen der api???"

wenn ich in eclipse einen klassenamen markiert habe und ich drücke auf F3 dann komm ich in die klasse. Wenn die Klasse aber zur API gehört , kommt ein Source not Found.. .Attach Source
Auf diesen Atach Source klickt man dann und wählt man eine src.zip datei, die sich im Installationsverzeichnis der jdk befindet. hat man nur die jre, lädt man einfach die jdk herunter usw. .......


----------



## gladiator09 (6. Jun 2008)

jaaaaaaaaaaaaaaa, gleich wochenende 

funktioniert jetzt übrigens...

danke 

lg,
alex


----------

