Oddzielenie stringa kropką

0

Witam!

Mam mały dylemat.. Otóż jak w prosty sposób oddzielić date podaną w takim formacie (jako String): (02.05.2015).
Mój fragment zadania polega na przeczytaniu wartości występujących w dacie tj. tutaj mamy do czynienia z "0","1", "2", "5".
Czy najpierw muszę oddzielić jakoś wartości, a potem muszę magicznym sposobem tego stringa przerobić na liczby.

Probowałem definiujac na początku tablice stringow:

String data = "01.02.2015";
String tablica[] = null;
tablica = data.split(".");

Ale niestety kompilator się burzy o kropkę.

Pozdrawiam serdecznie!

1

Po co Ci to? To nie jest naturalny sposób uzyskiwania daty ze Stringa.
A jeśli tak musisz, to

String[] tablica = data.split("\\.");

Argument funkcji split jest wyrażeniem regularnym, w którym "." ma specjalne znaczenie. Żeby ją tego znaczenia pozbawić, trzeba ja poprzedzić tym "\".

3
data.split("\\.");

a lepiejDateFormat format = new SimpleDateFormat("dd.MM.yyyy");
Date result = format.parse(data);

0

Wporządku, a w jaki sposób teraz czytać te liczby znak po znaku, aby wychwycić z nich kolejne wartości?
tzn. mam tablice już tych liczb typu int, i załóżmy jedna z wartości wynosi 27.
Jak przeczytać tą wartość znak po znaku tak, abym mógł wychwycić że to jest 2 i 7?

0
while(liczba != 0)
{
    kolejna_cyfra = liczba%10;
    liczba = liczba/10;
}
0

@mad_penguin
nie bardzo rozumiem jakby to miało działać? Mógłbyś delikatnie wyjaśnić?

Albo inaczej... Jak w prosty sposob z daty 23.02.2015 wyciagnąć wartości liczbowe. Tzn: że wstępują cyfry 0,1,2,3,5

0

Wynikiem liczba%10 jest ostatnia cyfra danej liczby, którą tutaj wpisuję do jakiejś zmiennej, ale ty możesz zrobić z nią co chcesz np. dodać do tablicy/kolekcji. Następnie wykonuję dzielenie całkowite przez 10, żeby pozbyć się ostatniej cyfry. Cykl powtarzasz dopóki zostają jakieś cyfry.

0

@mad_penguin

o kurcze, ale cwane - o to mi chodziło ^^
ale jedno mnie zastanawia... jak to działa?! przecież liczba%10 powoduje nam podzielność przez 10.. w takim razie czym rozni sie "%" od "/"?

2

Jeżeli potrzebujesz uporządkowane cyfry jakie występują w dacie, to można tak:

        String date = "23.02.2015";
        Set<Character> digits = new TreeSet<Character>();
        for(char c: date.toCharArray())
        {
            if(Character.isDigit(c))
            {
                digits.add(c);
            }
        }
        for(Character digit: digits)
        {
            System.out.print(digit+" ");
        }

liczba/10 to dzielenie całkowite 345/10 = 34
liczba%0 to reszta z dzielenia przez 10 345%10 = 5

0

aaaa jeszcze jedno mi się przypomnialo, to zeby nie zakladać nowego tematu:

jak mam jakiś ciąg znakow np. 324dhfsdjh5345 to w jaki sposob moge go czytać, ale znak po znaku?? np. chce w tym ciagu wybrać jakieś slowo np. ala
tylko prosił bym o jakiś pomysł nie wykorzystujący złożonych bibliotek - takie podstawy podstaw ^^

1

ale znak po znaku?? np. chce w tym ciagu wybrać jakieś slowo
To jest podejście bez sensu.
Albo czytasz znak po znaku, albo szukasz słowa, to są dwie różne rzeczy.
Do czytania znak po znaku najlepiej użyć funkcji charToArray
np. "abrakadabra".charToArray() utworzy tablicę znaków {'a','b','r','a','k','a','d','a','b','r','a'}
Do szukania słów możesz użyć funkcji contains, która Cię poinformuje czy słowo jest lub funkcji indexOf, która wskaże miejsce gdzie ono jest.

"123wino456".contains("wino")

zwróci true

"123wino456".indexOf("wino")

zwróci 4.

0

@bogdans

Dziękuje Ci bardzo!!!

i mam do Ciebie jeszcze jedną sprawę!

"w każdej linii pierwsze wystąpienie (o ile
istnieje) frazy (podanej jako drugi parametr)
powinno zostać napisane wielkimi literami,
natomiast ostatnie wystąpienie (jeśli było
więcej niż jedno) powinno zostać napisane
małymi literami "

             linia = czytaj.readLine();
            linia2 = linia.replaceFirst(fraza, fraza.toUpperCase());

NAtomiast to podmienia mi tylko PIERWSZĄ linie. Nie ma funkcji replaceLast.. wiec co w takim wypadku należy zrobić?

0
int lastIndex = linia.lastIndexOf(fraza);
if(lastIndex > linia.indexOf(fraza))
{
    linia = linia.substring(0,lastIndex) + fraza.toLowerCase() + linia.substring(lastIndex+fraza.length());

}

1 użytkowników online, w tym zalogowanych: 0, gości: 1