J'essaie de remplacer une partie de chaîne par une autre autre chaîne. Pour être plus précis, j'ai C:\Users\Desktop\Project\bin\Debug
et j'essaie de remplacer \bin\Debug
par \Resources\People
J'ai essayé ce qui suit:
path.Replace(@"\bin\Debug", @"\Resource\People\VisitingFaculty.txt");
path.Replace("\\bin\\Debug", "\\Resource\\People\\VisitingFaculty.txt");
Aucun des deux ci-dessus ne semble fonctionner, car la chaîne reste la même et rien n'est remplacé. Est-ce que je fais quelque chose de mal?
Le problème est que les chaînes sont immuables. Les méthodes remplacent, la sous-chaîne, etc. ne change pas la chaîne elle-même. Ils créent une nouvelle chaîne et la remplacent. Donc, pour que le code ci-dessus soit correct, il devrait être
path1 = path.Replace("\\bin\\Debug", "\\Resource\\People\\VisitingFaculty.txt");
Ou juste
path = path.Replace("\\bin\\Debug", "\\Resource\\People\\VisitingFaculty.txt");
si une autre variable n'est pas nécessaire
Cette réponse rappelle également que les chaînes sont immuables. Toute modification que vous leur apporterez créera en fait une nouvelle chaîne. Gardez donc cela à l'esprit avec tout ce qui implique des chaînes, y compris la gestion de la mémoire. Comme indiqué dans la documentation ici
Les objets chaîne sont immuables: ils ne peuvent pas être modifiés après avoir été créés. Toutes les méthodes String et opérateurs C # qui semblent modifier une chaîne retournent en fait les résultats dans un nouvel objet chaîne
La méthode path.Replace
Renvoie en fait un string
. Vous devez procéder comme suit:
path = path.Replace("firstString", "secondString");
String.Replace(string,string) returns string.
Donc, enregistrez le nouveau chemin dans une variable de chaîne.
path = path.Replace("\\bin\\Debug", "\\Resource\\People\\VisitingFaculty.txt");