someString[someRandomIdx] = 'g';
das gibt mir einen Fehler,Wie setze ich ein Zeichen in einem Index in einem String in C#?
wie kann ich die oben erreichen?
Edit:
ja, es ist vom Typ ‚string‘
someString[someRandomIdx] = 'g';
das gibt mir einen Fehler,Wie setze ich ein Zeichen in einem Index in einem String in C#?
wie kann ich die oben erreichen?
Edit:
ja, es ist vom Typ ‚string‘
Wenn es vom Typ string
dann kann man nicht tun, weil Strings sind unveränderlich - sie können nicht geändert werden, sobald sie festgelegt sind .
Um das zu erreichen, was Sie wünschen, können Sie eine StringBuilder
StringBuilder someString = new StringBuilder("someString");
someString[4] = 'g';
aktualisieren
Warum ein string
verwenden, anstelle eines StringBuilder
? Aus vielen Gründen. Hier sind einige, die ich mir vorstellen kann:
was ist der Unterschied zwischen einer Zeichenfolge und einem StringBuilder? , warum würde ich StringBuilders nicht überall verwenden? – matt
für weitere Informationen über die StringBuilder-Klasse: http://msdn.microsoft.com/en-us/library/system.text.stringbuilder.aspx –
C# -Strings sind unveränderlich. Sie sollten eine neue Zeichenfolge mit den geänderten Inhalten erstellen.
char[] charArr = someString.ToCharArray();
charArr[someRandomIdx] = 'g'; // freely modify the array
someString = new string(charArr); // create a new string with array contents.
Auschecken this article zum Ändern von Zeichenfolge Inhalt in C#. Strings sind unveränderlich, daher müssen sie in Zwischenobjekte konvertiert werden, bevor sie geändert werden können.
Sie können auch die Insert() - Methode z. somestring.Insert (Index, Daten)
Wenn Sie unbedingt die vorhandene Instanz einer Zeichenfolge ändern müssen, gibt es eine Möglichkeit mit unsicher Code:
public static unsafe void ChangeCharInString(ref string str, char c, int index)
{
GCHandle handle;
try
{
handle = GCHandle.Alloc(str, GCHandleType.Pinned);
char* ptr = (char*)handle.AddrOfPinnedObject();
ptr[index] = c;
}
finally
{
try
{
handle.Free();
}
catch(InvalidOperationException)
{
}
}
}
Gut zu wissen, danke, aber bitte nicht so machen :) – Roberto
http://msdn.microsoft.com/ de-de/library/system.string.insert.aspx –
Immutabilität ist ein mächtiges Werkzeug. – Dykam
mögliches Duplikat von [Ersetzen eines Zeichens bei einem gegebenen Index in einer Zeichenkette?] (Http://stackoverflow.com/questions/9367119/replacing-a-char-at-a-given-index-in-string) – psubsee2003