web-dev-qa-db-fra.com

comment supprimer toutes les instances d'un caractère spécifique d'une chaîne

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?

29
Ian Lundberg

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("^", "");
62
Tim Schmelter

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.

12
Mike Park

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("^","");
2
stackPusher