[ braneiv @ 10.06.2007. 19:43 ] @
Radim sa java 1.5.0_08.
Mozda sam danas previse radio (desi mi se nekada da se preopteretim pa ne vidim svoje banalne greske :)).


Code:

public class Test {

    /**
     * @param args
     */
    public static void main(String[] args) {
        
        //Prvi problem:
        
        String oldPart = "(Object)";
        String newPart = "(Object object0)";
        String string ="public void setValue(Object)";
        string = string.replaceAll(oldPart, newPart);
        System.out.println("Novi String je: " + string);


        //Drugi problem:
        String [] strings = null; 
        strings = "neki.paket.Klasa".split(".");
        System.out.println("Length je: " + strings.length);    
    }

}



Ovaj trivijalni program kod mene daje sledeci izlaz:

Code:

Novi String je: public void setValue((Object object0))
Length je: 0


Valjda je jasno... ((Object object0)) umjesto (Object object0) ... duzina niza 0 ???
Ne sjecam se da sam ovakvih problema imao sa javom 1.4... ali opet, sve je moguce...
[ filmil @ 10.06.2007. 20:20 ] @
Prema http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html,
prvi argument metoda .replaceAll i .split klase String je regularni
izraz. U regularnim izrazima zagrade i tačka su specijalni znaci koji
se naročito tumače. Ako želiš da tražiš zagrade i tačku u nizu, moraš
da citiraš upotrebom "\". Dodatno pošto je "\" specijalan znak u Javinim
stringovima, moraš i njega da citiraš upotrebom "\\".

Ovo je ispravljen program i njegov izlaz, pa vidi da li ti odgovara:
Code:
public class Test {

public static void main(String[] args) {

//Prvi problem:

String oldPart = "\\(Object\\)";
String newPart = "(Object object0)";
String string ="public void setValue(Object)";
string = string.replaceAll(oldPart, newPart);
System.out.println("Novi String je: " + string);


//Drugi problem:
String [] strings = null;
strings = "neki.paket.Klasa".split("\\.");
System.out.println("Length je: " + strings.length);
}

}



Code:
filip@cow:~
$ javac Test.java
filip@cow:~
$ java Test
Novi String je: public void setValue(Object object0)
Length je: 3
filip@cow:~
$



f
[ anon315 @ 10.06.2007. 20:30 ] @
Code:

public class Test {

    /**
     * @param args
     */
    public static void main(String[] args) {
        
        //Prvi problem:
        String oldPart = "Object";
        String newPart = "Object object0";
        String string ="public void setValue(Object)";
        string = string.replaceAll(oldPart, newPart);
        System.out.println("Novi String je: " + string);

        //Drugi problem:
        String [] strings = "neki.paket.Klasa".split("\\\\.");
        System.out.println(strings[0]);
        System.out.println("Length je: " + strings.length);    
    }

}


Prvi problem si ocigledno zeznuo bezveze, a za ovo drugo - u pitanju je regepx, a tamo je tacka specijalan karakter, pa moras da ga eskejpujes (posto je i \ specijalan, moras i njega).

Btw, najsmesnije je sto ovde imamo HTML, sa pa sam 2 backslasha morao da napisem kao 4 :)

[Ovu poruku je menjao Vanja Petreski dana 11.06.2007. u 18:13 GMT+1]

[Ovu poruku je menjao Vanja Petreski dana 11.06.2007. u 18:13 GMT+1]
[ braneiv @ 10.06.2007. 20:31 ] @
@filmil

Uh... koji previd. Hvala ti puno.

@Vanja Petreski

Hvala i tebi, ali prvi problem nisam zeznuo bezveze, vec sam samo dao bezveze primjer... a moglo je biti i ovako:

Code:

String string ="public Object transform(Object)";


i jos raznih kombinacija...
[ anon315 @ 10.06.2007. 20:55 ] @
Da, da, tako je..