2012-04-05 27 views
25

dan nasıl silebilirim Merhaba Bir dizeden belirli bir karakterin tümünü kaldırmaya çalışıyorum. Ben String.Replace kullanıyordum, ama ne olduğunu bilmiyorum. Bu benim mevcut kodum.Belirli bir karakterin tüm örneklerini dize

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); 
    } 

Temelde o sırada, Xbox 360 bir dize bayt değerini alır dize forma dönüştürür. ancak "^" String.Replace'un tüm örneklerini kaldırmasını istemiyorum. Kesinlikle hiçbir şey yapmaz. Dizgiyi daha önce olduğu gibi bırakır. Herkes bana bunu neden yaptığını açıklayabilir mi?

+0

Düzenli İfadeyi denediniz mi? – Sandeep

+2

@Sandeep Düzenli İfadeler, basit bir sorunu fazlasıyla karşılar. – Amicable

cevap

51

Orijinal dize örneğine String.Replace dönüş değeri atamak gerekir:

dolayısıyla yerine Contains check)

if (Gamertag2.Contains("^")) 
{ 
    Gamertag2.Replace("^" + 1, ""); 
} 

için (gerek sadece bu (ne olduğunu +1 mistik):?

Gamertag2 = Gamertag2.Replace("^", ""); 
+4

@Ian - İkna olmadım. Bize söylemediğin bir şey olmadığı sürece, 'Gamertag2 = Gamertag2.Replace ("^", ""); 'kesinlikle"^"örneğini kaldırır. 'String.Replace' sonrası bir kesme noktası ayarlayın ve 'Gamertag2' konumundan"^"öğesini kaldırıp kaldırmayacağını görün. – climbage

+2

Bir dize değişmez - yani bir şeye atamanız gerekir. .Yeni bir dizi döndürecektir. – Shumii

10

İki şey:

1) C# Karakter dizileri değişmez. Bunu yapmak gerekir:

Gamertag2 = Gamertag2.Replace("^" + 1, ""); 

2) "^" + 1? Bunu neden yapıyorsun? Temel olarak, istediğin şeyin tam olarak olmadığına dair Gamertag2.Replace("^1", ""); diyorsun.

1

Tırmanma dediği gibi, sorununuz kesinlikle

Gamertag2.Replace("^"+1,""); 

Bu satır yalnızca "^ 1" örneklerini dizeden kaldıracaktır. Tüm "^" örneklerini kaldırmak isterseniz, ne istediğiniz:

Gamertag2.Replace("^",""); 
İlgili konular