someString[someRandomIdx] = 'g';
qui va me donner une erreur,comment définir un caractère à un index dans une chaîne dans C#?
comment puis-je obtenir ce qui précède?
Edit:
oui, il est de type « string »
someString[someRandomIdx] = 'g';
qui va me donner une erreur,comment définir un caractère à un index dans une chaîne dans C#?
comment puis-je obtenir ce qui précède?
Edit:
oui, il est de type « string »
Si elle est de type string
alors vous ne pouvez le faire parce que les chaînes sont immuables - ils ne peuvent pas être modifiés une fois qu'ils sont fixés .
Pour obtenir ce que vous désirez, vous pouvez utiliser un StringBuilder
StringBuilder someString = new StringBuilder("someString");
someString[4] = 'g';
Mise à jour
Pourquoi utiliser un string
, au lieu d'un StringBuilder
? Pour beaucoup de raisons. Voici quelques-uns que je peux penser à:
la différence entre une chaîne et un StringBuilder? Par exemple, pourquoi n'utiliserais-je pas simplement StringBuilders partout? – matt
pour plus d'informations sur la classe StringBuilder: http://msdn.microsoft.com/en-us/library/system.text.stringbuilder.aspx –
Les chaînes C# sont immuables. Vous devriez créer une nouvelle chaîne avec le contenu modifié.
char[] charArr = someString.ToCharArray();
charArr[someRandomIdx] = 'g'; // freely modify the array
someString = new string(charArr); // create a new string with array contents.
Consultez la section this article pour savoir comment modifier le contenu d'une chaîne en C#. Les chaînes sont immuables, elles doivent donc être converties en objets intermédiaires avant de pouvoir être modifiées.
Vous pouvez également utiliser la méthode Insert(), par ex. somestring.Insert (index, données)
Si vous devez absolument changer l'instance existante d'une chaîne, il y a un moyen avec dangereux 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)
{
}
}
}
Bon à savoir, merci, mais s'il vous plaît ne le faites pas de cette façon :) – Roberto
http://msdn.microsoft.com/ fr-us/library/system.string.insert.aspx –
L'immunité est un outil puissant. – Dykam
duplication possible de [Remplacer un caractère à un index donné dans la chaîne?] (Http://stackoverflow.com/questions/9367119/replacing-a-char-at-a-given-index-in-string) – psubsee2003