Gibt es eine einfache Möglichkeit, ein Zeichen in einer Zeichenfolge in C # zu ändern?

8

Ich möchte das tun:

%Vor%

und s werden "axc". Es scheint jedoch, dass string [i] nur einen Getter hat und keinen Setter hat. Der Compiler gibt mir den folgenden Fehler:

  

"Eigenschaft oder Indexer   'string.this [int]' kann nicht zugewiesen werden   zu - es ist nur lesbar "

Ich denke, ich könnte eine Schleife machen und den gewünschten Char ändern. aber ich habe mich nur gefragt, ob es einen einfachen Weg gibt, es zu tun? Und warum gibt es keinen Setter für String [i]?

Vielen Dank im Voraus.

    
StarCub 16.07.2010, 10:16
quelle

8 Antworten

18

Strings sind unveränderbar, daher müssen Sie ein char[] -Array erstellen, es ändern und es dann in eine Zeichenfolge zurückverwandeln:

%Vor%     
Callum Rogers 16.07.2010, 10:20
quelle
13

Strings sind unveränderbar, weshalb es keinen Setter gibt. Sie können jedoch einen String Builder verwenden:

%Vor%     
JLWarlow 16.07.2010 10:21
quelle
2

(Ihr Beispiel ist etwas falsch: s [2] = 'x' sollte es in "abx" ändern.)

Nein, Sie können nicht, da Strings unveränderbar sind, müssen Sie eine neue Zeichenfolge erstellen:

  

Ссылка

Sie sollten eine Methode verwenden, die eine neue Zeichenfolge mit der gewünschten Änderung zurückgibt.

Hoffe das hilft!

    
Kieren Johnstone 16.07.2010 10:21
quelle
2

Denken Sie daran, dass Strings in verwalteten und sicheren .Net-Archiven unveränderlich sind. Selbst wenn Sie das oben beschriebene tun könnten, würden Sie wirklich eine neue Kopie des Strings mit dem Ersatz erstellen.

Wenn Sie nur ein Zeichen ersetzen, ist wahrscheinlich eine einfache Schleife die beste Wahl.

Wenn Sie jedoch mehrere Ersetzungen vornehmen möchten, sollten Sie eine StringBuilder :

verwenden %Vor%     
Rob Levine 16.07.2010 10:22
quelle
1

Ich denke nicht, dass Sie das in C # tun können, da die Zeichenfolge nicht geändert werden kann (einfach zerstört und neu erstellt). Sehen Sie sich die Klasse StringBuilder an.

    
pm_2 16.07.2010 10:20
quelle
1

Warum tun Sie das nicht, wenn Sie Linq verwenden

%Vor%

Das sollte es dir ermöglichen, den von dir gewünschten Char mit dem von dir gewünschten Char zu ersetzen.

    
PSU_Kardi 16.07.2010 12:41
quelle
0

Was ist das?

%Vor%     
Toan Nguyen 16.07.2010 10:30
quelle
0

ja in c # string kann nicht geändert werden.

Aber wir können das versuchen

%Vor%

Antwort wird "axc" sein. da dies die alte Zeichenfolge durch eine neue Zeichenfolge ersetzt.

    
Kinjal 16.07.2010 12:30
quelle

Tags und Links