2016-12-24 8 views
5

मैं String.Trimस्ट्रिंग क्यों है। ट्रिम एक सेमीकॉलन ट्रिम नहीं कर रहा है?

split[2].Trim(';') 

साथ एक स्ट्रिंग ट्रिम करने के लिए कोशिश कर रहा हूँ, लेकिन मैं का परिणाम हो रही है: मैं भी उपयोग करने की कोशिश

System; 
बजाय

System 

split[2].TrimEnd(';') 

लेकिन यह अभी भी एक ही परिणाम देता है।

इसके अलावा, अगर मैं

split[2].Trim('S', ';') 

कर रहा

ystem; 

मैं वास्तव में उलझन में क्यों यह हो रहा है कर रहा हूँ मिलता है। क्या ऐसा हो सकता है क्योंकि अर्धविराम स्ट्रिंग में अंतिम चरित्र नहीं है?

string line = @" 
using System; 
using System.Windows.Forms; 
class HelloWorld 
{ 
    static void Main() 
    { 
#if DebugConfig 
     Console.WriteLine("WE ARE IN THE DEBUG CONFIGURATION"); 
#endif 

     Console.WriteLine("Hello, world!"); 
     DialogResult result; 
     result = MessageBox.Show("Itsyeboi", "Yup", MessageBoxButtons.YesNo); 
     if (result == DialogResult.Yes) 
     { 
      Console.WriteLine("Yes"); 
      Console.ReadLine(); 
     } 
     else 
     { 
      Console.WriteLine("No"); 
      Console.ReadLine(); 
     } 

    } 
}" 
string[] split = line.Split(' ', '\n'); 
while (true) 
{ 
    if (split[counter4] == "using") 
    { 
     richTextBox1.Text = split[1].Trim(';'); 
     break; 
    } 
    else 
    { 
      richTextBox1.Text = line; 
     break; 
    } 
} 

FYI करें मैं हाल ही में एक टिप्पणी है कि देखा है कि मेरी जबकि पाश व्यर्थ था देखा:

यहाँ पूर्ण कोड है। सच है, लेकिन यह "डब्ल्यूआईपी" है और अंतिम संस्करण नहीं है।

+1

कृपया लौटाई गई स्ट्रिंग की लंबाई जांचें। शायद ';' पिछला चरित्र नहीं है। – derM

+0

लूप के दौरान उसमें क्या चल रहा है? आप हमेशा एक दौर के बाद तोड़ते हैं तो आपको इसकी आवश्यकता क्यों है? – Staeff

+0

@Staeff यह अभी तक समाप्त नहीं हुआ है, मैं पहले कथन में ब्रेक को हटाने जा रहा हूं। – TheMCProgrammer

उत्तर

3

निम्न पंक्ति बदलें:

string[] split = line.Split(' ', '\n'); 

इस के साथ:

string[] split = line.Replace("\r\n", "\n").Split(' ', '\n'); 

यह सिर्फ न्यू लाइन पात्रों के साथ किसी भी कैरिएज रिटर्न की जगह, संभावना है कि एक अनुगामी \r आपकी समस्या का कारण बनने को हटाने होंगे।

+6

.नेट कोर के संबंध में यह संभवतः एनविर्नमेंट का उपयोग करना बेहतर है।"\ R \ n" के बजाय न्यूलाइन() (बीटीडब्ल्यू इसके दो अक्षरों के बाद से आप इसे एक सिंगल के रूप में उपयोग नहीं कर पाएंगे) – Staeff

+0

बस अगर कोई भ्रमित हो जाता है, तो 'पर्यावरण। न्यूलाइन() 'इस पर ध्यान दिए बिना काम करता है आप .NET कोर का उपयोग कर रहे हैं। लेकिन जैसा कि @ सैटेफ ने बताया कि .NET कोर क्रॉस-प्लेटफ़ॉर्म होने के संदर्भ में, यह मानना ​​महत्वपूर्ण नहीं है कि \ r \ n' हमेशा लाइनें समाप्त होती हैं। –

0

यदि यह उत्तर गलत है, तो मैं इसे हटा दूंगा। चूंकि सूचना स्पैस है, यह केवल एक जंगली अनुमान है।

सही befor

split[2].Trim(';') 

एक

split[2].Trim() 

सम्मिलित करना चाल करना सबसे अधिक संभावना होगी।

यदि नहीं, लेकिन आप जानते हैं कि अंतिम char ; है और आप केवल इससे छुटकारा पाने के लिए चाहते हैं तो आप अपनी सरणी को भी टुकड़ा कर सकते हैं। यह शायद, और अधिक कुशल हो के रूप में आप, जबकि इस सबसे अधिक संभावना से किया जाता है किसी भी वर्ण की तुलना करने की जरूरत नहीं होगी कम से कम दो बार होगा यदि आप TrimEnd का उपयोग करें या तीन बार आप अगर yous Trim

संबंधित मुद्दे