2016-12-24 23 views
5

Ben String.TrimString.Trim neden noktalı virgül kırpmıyor?

split[2].Trim(';') 

bir dize kesmek için çalışıyorum ama sonucunu alıyorum: Ben de kullanarak çalıştı

System; 

yerine

System 

split[2].TrimEnd(';') 

ama yine de aynı sonucu veriyor.

Ben

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

yapmak Ayrıca eğer

ystem; 

Ben Bu neden oluyor gerçekten kafam karıştı olsun. Bu, noktalı virgül dizgede son karakter olmadığı için olabilir mi?

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

Bilginize Geçenlerde benim while döngüsü anlamsız olduğunu fark bir yorum gördüm:

İşte tam koddur. Doğru, ama "WIP" dir ve son versiyon değil.

+1

Lütfen döndürülen dizenin uzunluğunu kontrol edin. Belki '' 'sondaki karakter değildir. – derM

+0

Bu döngüde bile neler oluyor? Bir turdan sonra her zaman kırılırsın, neden buna ihtiyacın var? – Staeff

+0

@Staeff Henüz bitmedi, ilk if ifadesinde arayı kaldıracağım. – TheMCProgrammer

cevap

3

aşağıdaki satırı değiştirin:

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

:

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

Bu sondaki \r senin soruna neden olabileceği olasılığı kaldırma sadece satır karakterleri ile herhangi satırbaşları değiştirecektir.

+6

. Net çekirdeği ile ilgili olarak, muhtemelen Enviornment'in kullanılması tercih edilir.NewLine() yerine "\ r \ n" (iki karakterden beri btw bunu tek bir char olarak kullanamayacaksınız) – Staeff

+0

Sadece kimsenin karışması durumunda, 'Environment.NewLine() ' .NET Core kullanıyorsunuz. Ancak, @Staeff'ın belirttiği gibi, .NET Core'un çapraz platform olması bağlamında, '\ r \ n'nin her zaman satırların nasıl bittiğini varsaymamak önemlidir. –

0

Bu yanıt yanlışsa, onu silerim. Bilgi seyrek olduğundan, bu sadece vahşi bir tahmindir. Sağ

split[2].Trim(';') 

befor

split[2].Trim() 

takma

hile yapmak büyük olasılıkla olacaktır.

Değilse, ancak en son char'ın bir ; olduğunu biliyorsunuz ve sadece bundan kurtulmak istiyorsanız, yalnızca dizinizi dilimleyebilirsiniz. Bu büyük olasılıkla işlem yapılırken, herhangi bir karakter karşılaştırmak gerek olmazdı gibi TrimEnd kullanabilir veya bu muhtemelen en az iki kez, daha verimli olacaktır üç kez size eğer yous Trim

İlgili konular