Bonjour, j'essaie de supprimer tous les caractères spécifiques d'une chaîne. J'utilise String.Replace
, MAIS IL NE FAIT RIEN et je ne sais pas pourquoi. Ceci est mon code actuel.
public string color;
public string Gamertag2;
private void imcbxColor_SelectedIndexChanged(object sender, EventArgs e)
{
uint num;
XboxManager manager = new XboxManagerClass();
XboxConsole console = manager.OpenConsole(cbxConsole.Text);
byte[] Gamertag = new byte[32];
console.DebugTarget.GetMemory(0x8394a25c, 32, Gamertag, out num);
Gamertag2 = Encoding.ASCII.GetString(Gamertag);
if (Gamertag2.Contains("^"))
{
Gamertag2.Replace("^" + 1, "");
}
color = "^" + imcbxColor.SelectedIndex.ToString() + Gamertag2;
byte[] gtColor = Encoding.ASCII.GetBytes(color);
Array.Resize<byte>(ref gtColor, gtColor.Length + 1);
console.DebugTarget.SetMemory(0x8394a25c, (uint)gtColor.Length, gtColor, out num);
}
Il récupère essentiellement la valeur en octets d'une chaîne de ma Xbox 360, puis la convertit sous forme de chaîne. mais je veux qu'il supprime toutes les instances de "^" String.Replace
ne semble pas fonctionner. Cela ne fait absolument rien. Il laisse simplement la chaîne comme avant. Quelqu'un peut-il m'expliquer pourquoi il fait cela?
Vous devez affecter la valeur de retour de String.Replace
à votre instance de chaîne d'origine:
donc au lieu de (pas besoin de Contains check)
if (Gamertag2.Contains("^"))
{
Gamertag2.Replace("^" + 1, "");
}
juste ça (c'est quoi ce mystique +1
?):
Gamertag2 = Gamertag2.Replace("^", "");
Deux choses:
1) Les chaînes C # sont immuables. Vous devrez faire ceci:
Gamertag2 = Gamertag2.Replace("^" + 1, "");
2) "^" + 1
? Pourquoi fais-tu ça? Vous dites essentiellement Gamertag2.Replace("^1", "");
qui, je suis sûr, n'est pas ce que vous voulez.
Comme l'a dit climbage, votre problème est définitivement
Gamertag2.Replace("^"+1,"");
Cette ligne supprimera uniquement les instances de "^ 1" de votre chaîne. Si vous souhaitez supprimer toutes les instances de "^", vous voulez:
Gamertag2.Replace("^","");