こんにちは、文字列から特定の文字をすべて削除しようとしています。私はString.Replace
、しかし、それは何もしないので、理由はわかりません。これが私の現在のコードです。
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);
}
基本的に、Xbox 360から文字列のバイト値を取得し、それを文字列形式に変換します。しかし、「^」のすべてのインスタンスを削除したいString.Replace
は機能していないようです。それは絶対に何もしません。以前と同じように文字列を残します。なぜこれを行うのかについて私に説明してもらえますか?
String.Replace
の戻り値を元の文字列インスタンスに割り当てる必要があります。
したがって、代わりに(Contains check)
の必要はありません
if (Gamertag2.Contains("^"))
{
Gamertag2.Replace("^" + 1, "");
}
ちょうどこれ(その神秘的な+1
とは何ですか?):
Gamertag2 = Gamertag2.Replace("^", "");
2つのこと:
1)C#文字列は不変です。これを行う必要があります:
_Gamertag2 = Gamertag2.Replace("^" + 1, "");
_
2)_"^" + 1
_?なぜあなたはこれをやっている?あなたは基本的にGamertag2.Replace("^1", "");
と言っていますが、これはあなたが望むものではないと確信しています。
登山が言ったように、あなたの問題は間違いなく
Gamertag2.Replace("^"+1,"");
その行は、文字列から「^ 1」のインスタンスのみを削除します。 「^」のすべてのインスタンスを削除する場合、必要なものは次のとおりです。
Gamertag2.Replace("^","");