|
| Problem med String.replaceAll Fra : Frank N |
Dato : 15-01-03 15:47 |
|
Hvorfor virker det her ikke????
Skulle den ikke udskrive Frank er meget dum??
Eller har jeg helt misforstået det.
på forhånd tak
public class test {
public static void main(String args[])
{
String x = "frank er vildt dum";
String y = "vildt";
String ny = "meget";
x.replaceAll(ny,y);
System.out.print(x);
}
}
Udskrift:
frank er vildt dum
| |
Lasse Reichstein Nie~ (15-01-2003)
| Kommentar Fra : Lasse Reichstein Nie~ |
Dato : 15-01-03 16:31 |
|
"Frank N" <ask@me.dk> writes:
> Skulle den ikke udskrive Frank er meget dum??
....
> String x = "frank er vildt dum";
....
> x.replaceAll(ny,y);
> System.out.print(x);
....
> Udskrift:
> frank er vildt dum
En String kan man ikke ændre indholdet af. Hvis man vil det, skal man
bruge en Stringbuffer i stedet. Derfor er det ikke så overraskende at
indholdet af x's String ikke har ændret sig.
Hvis du kigger på definitionen af String's replaceAll-metode, så
returnerer den en String. Det er denne nye String der er den
opdaterede version.
Prøv med:
String res=x.replaceAll(ny,y);
System.out.print(res);
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
'Faith without judgement merely degrades the spirit divine.'
| |
Simon... (15-01-2003)
| Kommentar Fra : Simon... |
Dato : 15-01-03 20:15 |
|
> Prøv med:
>
> String res=x.replaceAll(ny,y);
> System.out.print(res);
eller bare
x = x.replaceAll(ny,y);
eller
System.out.println(x.replaceAll(ny,y));
metoden udfører jobbet, og returnerer en string, den gemmer altså ikke
direkte det man har
bedt den om at ændre, så du skal huske at gemme det, hvis det er det du
vil.
mvh.Simon
| |
Anders K. Olsen (15-01-2003)
| Kommentar Fra : Anders K. Olsen |
Dato : 15-01-03 21:33 |
|
"Simon..." <devnull@linux.org> skrev i en meddelelse
news:3e25b33e$0$185$edfadb0f@dread15.news.tele.dk...
>
> den gemmer altså ikke
> direkte det man har
> bedt den om at ændre, så du skal huske at gemme det, hvis det er det du
> vil.
String's er immutable i Java, dvs. de kan ikke ændres. Hvis du kikker på
alle String metoderne, så vil du også se, at ingen af dem rent faktisk
ændrer ved den String de kaldes på. De returnerer derimod en ny String med
resultatet. Hvis du vil ændre på en tekststreng skal du bruge StringBuffer.
/Anders
| |
Martin Kofoed (16-01-2003)
| Kommentar Fra : Martin Kofoed |
Dato : 16-01-03 17:52 |
|
Frank N wrote:
> String x = "frank er vildt dum";
> String y = "vildt";
> String ny = "meget";
>
> x.replaceAll(ny,y);
> System.out.print(x);
For det første søger du efter "meget" i x. Den findes ikke. For det andet
returnerer replaceAll() en ny streng med resultatet.
Prøv med String res = x.replaceAll(y,ny);
--
Martin
| |
|
|