c # string.replace in foreach Schleife

7

Irgendwie kann ich nicht scheinen, Stringwechsel innerhalb einer foreach Schleife in C # zu erhalten, um zu arbeiten. Mein Code ist wie folgt:

%Vor%

Bin immer noch ziemlich neu für LINQ, also verzeih mir, wenn das amateurhaft klingt;)

    
paradox 26.04.2010, 08:28
quelle

5 Antworten

30

Sie sagen, dass Sie hinter einer LINQ-Lösung her sind ... das ist einfach:

%Vor%

Wir kennen den Typ von names nicht, aber wenn Sie ihn zurück zuweisen möchten, könnten Sie ToArray oder ToList verwenden:

%Vor%

Sie sollten sich darüber im Klaren sein, dass der von Ihnen gepostete Code momentan überhaupt nicht LINQ verwendet ...

    
Jon Skeet 26.04.2010, 08:37
quelle
21

Zeichenketten in C # sind unveränderlich (ändert sich nicht), so dass s.Replace eine neue Zeichenkette zurückgibt. Leider bedeutet dies, dass Sie foreach nicht für die Aktualisierung verwenden können. Wenn Namen ein Array ist, sollte dies funktionieren:

%Vor%     
Anders Abel 26.04.2010 08:29
quelle
3

Wie andere bereits erwähnt haben, müssen Sie eine for -Schleife verwenden, um dies direkt zu tun. Wenn die Operation nicht direkt ausgeführt werden muss (d. H. Die Ergebnisse können eine andere Sammlung sein), können Sie dies auch als linq-Abfrage durchführen, z. B.

%Vor%

Eine Sache jedoch - es sieht so aus, als ob Sie versuchen, die Erweiterung einiger Dateinamen zu ändern. Wenn das das ist, was Sie versuchen, dann würde ich Path.ChangeExtension die speziell für diesen Zweck entwickelt wurde.

%Vor%     
Greg Beech 26.04.2010 08:38
quelle
0

s.Replace ist eine Funktion, so dass Sie s = s.Replace () möchten .. obwohl es besser ist, StringBuilder zu verwenden. (siehe obere Antwort)

    
Radu Pintilie 26.04.2010 08:31
quelle
-1

Warum Ersetzen verwenden, wird dies die Anwendung verlangsamen. Benutze Regex:

Ссылка

    
Fish 26.04.2010 10:53
quelle

Tags und Links