2012-10-09 5 views

Répondre

4

Parce que les instances de java.lang.String sont immuables *. replaceAll renvoie la chaîne correcte, mais votre programme la rejette. Modifiez votre programme comme suit pour corriger le problème:

file = file.replaceAll("/", "_"); 


* C'est une façon élégante de dire « non modifiable »: une fois par instance de chaîne "A/B" est créée, il n'y a pas des méthodes que vous pourriez appeler dessus pour changer cette valeur.

3

Vous devez stocker le résultat de l'appel file.replaceAll() comme String instances sont immuables:

file = file.replaceAll("/", "_"); 
1

Vous devez attribuer le résultat de la replaceAll:

public static void main(String[] args) throws IOException { 
    String file = "A/B"; 
    String newFile = file.replaceAll("/", "_"); 
    System.out.println(newFile); 
} 
1
file.replaceAll("/", "_"); 

Depuis, String en Java est immuable, donc toute méthode de la classe String, pas seulement replaceAll, ne modifie pas la chaîne existante .. Au lieu de cela, ils créent une nouvelle chaîne et la retournent. Vous devez donc réattribuer la chaîne renvoyée au file ..

file = file.replaceAll("/", "_"); 
0

Regardez attentivement String.replaceAll javadoc: il renvoie une chaîne.

Ce type de méthode ne modifie pas leur paramètre. Alors vous devez écrire:

String file = "A/B"; 
file = file.replaceAll("/", "_"); 
Questions connexes