2012-04-05 3 views
25

से किसी विशिष्ट वर्ण के सभी उदाहरणों को कैसे निकालें हैलो मैं स्ट्रिंग से सभी विशिष्ट वर्णों को निकालने का प्रयास कर रहा हूं। मैं 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 के सभी उदाहरणों को हटाने के लिए काम नहीं करता हूं। यह बिल्कुल कुछ नहीं करता है। यह सिर्फ स्ट्रिंग को छोड़ देता है जैसा कि पहले था। क्या कोई मुझे बता सकता है कि ऐसा क्यों करता है?

+0

क्या आपने नियमित अभिव्यक्ति का प्रयास किया था? – Sandeep

+2

@ संदीप नियमित अभिव्यक्ति एक सीधा मुद्दा खत्म हो जाएगा। – Amicable

उत्तर

51

आप अपने मूल स्ट्रिंग उदाहरण के लिए String.Replace के रिटर्न मान असाइन करना होगा:

इसलिए बजाय (Contains check)

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

की कोई जरूरत सिर्फ इस (क्या है कि रहस्यवादी +1):

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

@ इयान - मुझे विश्वास नहीं है। जब तक कि आप कुछ नहीं कह रहे हैं, 'Gamertag2 = Gamertag2.Replace ("^", "");' निश्चित रूप से "^" के किसी भी उदाहरण को हटा देगा। 'स्ट्रिंग। रीप्लेस' के बाद ब्रेक पॉइंट सेट करें और देखें कि यह 'Gamertag2' से "^" को हटा देता है या नहीं। – climbage

+2

एक स्ट्रिंग अपरिवर्तनीय है - जिसका अर्थ है कि आपको इसे किसी चीज़ को असाइन करने की आवश्यकता है। । जगह एक नई स्ट्रिंग वापस कर देगा। – Shumii

10

दो चीजें:

1) सी # स्ट्रिंग्स अपरिवर्तनीय हैं। आपको यह करने की आवश्यकता होगी:

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

2) "^" + 1? आप यह क्यों कर रहे हैं? आप मूल रूप से Gamertag2.Replace("^1", ""); कह रहे हैं जो मुझे यकीन है कि आप जो चाहते हैं वह नहीं है।

1

चढ़ाई की तरह कहा, आपकी समस्या निश्चित रूप से

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

वह पंक्ति केवल आपकी स्ट्रिंग से "^ 1" के उदाहरणों को हटा देगी। यदि आप "^" के सभी उदाहरणों को हटाना चाहते हैं, तो आप क्या चाहते हैं:

Gamertag2.Replace("^",""); 
संबंधित मुद्दे