Как удалить все экземпляры определенного символа из строки
Здравствуйте, я пытаюсь удалить весь конкретный символ из строки. Я использовал 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
, похоже, не работает. Это абсолютно ничего. Он просто оставляет строку, как раньше. Может ли кто-нибудь объяснить мне, почему он это делает?
Ответы
Ответ 1
В исходный экземпляр строки вы должны присвоить возвращаемое значение String.Replace
:
следовательно, вместо (нет необходимости в Contains check)
if (Gamertag2.Contains("^"))
{
Gamertag2.Replace("^" + 1, "");
}
только это (что этот мистик +1
?):
Gamertag2 = Gamertag2.Replace("^", "");
Ответ 2
Две вещи:
1) Строки С# неизменяемы. Вам нужно будет сделать это:
Gamertag2 = Gamertag2.Replace("^" + 1, "");
2) "^" + 1
? Зачем ты это делаешь? Вы в основном говорите Gamertag2.Replace("^1", "");
, который, я уверен, не то, что вы хотите.
Ответ 3
Как и скалолазание, ваша проблема определенно
Gamertag2.Replace("^"+1,"");
Эта строка удалит только экземпляры "^ 1" из вашей строки. Если вы хотите удалить все экземпляры "^", то вы хотите:
Gamertag2.Replace("^","");