2013-11-09 42 views
1

我遇到了程序問題。我有讀取文件*.txt和給定字符分割它,例如:文件包含此:如何在C中按給定的分隔符分割文本文件#

rotbrow 
yabector 
gamerue 

所以,當我插入指定的分隔符是a,應該行分開這樣的:

rotbrow 
ya 
bector 
ga 
merue 

但它們打印這樣沒有一個:

rotbrow 
ya 
bector 
ga 
merue 

這是我使用的代碼:

foreach (string line in File.ReadAllLines(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\ArchivoaSeparar.txt")) 
{ 
    string[] parts = line.Split(cadenaTextBox.Text.ToCharArray()); 

    foreach (string item in parts) 
    { 
     listBox1.Items.Add(item); 
    } 
} 

我不小心爲什麼不顯示給定的分隔符(在las示例中的a),我必須對輸入的任何文本和給定的分隔符執行此操作。

希望你能幫助我。

回答

1

在拆分操作之後,您不會獲取作爲返回值的一部分的指定器。 你可以有額外的邏輯,以添加如下:

foreach (string line in File.ReadAllLines(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\ArchivoaSeparar.txt")) 
      { 
       String checkItem = cadenaTextBox.Text.ToString(); 
       string[] parts = line.Split(checkItem.ToCharArray()); 

       foreach (string item in parts) 
       { 
        listBox1.Items.Add((line.Contains(checkItem) ? item + checkItem : item)); 
       } 
      } 
+0

這工作兄弟,但爲什麼要添加項目到最後一行,例如我充電包含Hola的文件(你好用英語)它分離de字符串,但delimater在行的末尾appering,¿是否爲((line.Contains(checkItem)?item + checkItem:item));每次執行foreach時,都會在最後一行添加delimater –

2

當你在一些分離器上分割一個字符串時,那個分隔符是而不是的部分結果部分。如果你想看到「a」,你需要手動添加它(每個部分都會刪除最後一個)。

順便說一句:那ToCharArray不會有你可能想要的效果:如果你輸入「或」作爲分隔符,那麼「r」和「o」都是獨立的分隔符,所以他們分裂他們是否在一起(該字符串將在單個「o」上拆分,並在「ro」或「or」上拆分兩次。)

+0

是的,這是我在想什麼做的,但不知道如何添加delimater,在這之下的答案做到這一點,但總是添加到最後一行正如你所說,如果我輸入一個分隔符或我應該顯示「或」和其餘的分割文本正在發生。 –

相關問題