2014-11-06 94 views
0

我正在读取文本文件并进行一些对齐更改,同时删除第3列文本文件中的空格并将其替换为下划线(_)符号。 但不幸的是..当我的输出生成我可以看到下划线符号不是无缘无故地来到。请问任何人都可以帮助我,为什么它会发生这样的事情?输出文本文件不给我下划线符号

代码片段:

public void just_create_text() 
    { 
     //Here we are exporting header 
     string[] strLines = System.IO.File.ReadAllLines(textBox1.Text); 
     string CarouselName = enter.Text; 
     int[] cols = new int[] { 15, 15, 25, 15, 15 }; 
     StringBuilder sb = new StringBuilder(); 
     string line = RemoveWhiteSpace(strLines[0]).Trim(); 
     string[] cells = line.Replace("\"", "").Split('\t'); 

     for (int c = 0; c < cells.Length; c++) 
      sb.Append(cells[c].Replace(" ", "_").PadRight(cols[c])); 
     // here i am replacing the space with underscore... 

     sb.Append("Location".PadRight(15)); 
     sb.Append("\r\n"); 

     int tmpCarousel = 0; 
     int carouselNumber = 0; 
     Dictionary<string, int> namesForCarousels = new Dictionary<string, int>(); 
     for (int i = 0; i < textfile.Count; i++) 
     { 


      for (int c = 0; c < cells.Length; c++) 
       sb.Append(textfile[i].Cells[c].PadRight(cols[c])); 

      string name = textfile[i].Cells[1]; 

      if (namesForCarousels.TryGetValue(name, out tmpCarousel) == false) 
      { 
       carouselNumber++; 
       namesForCarousels[name] = carouselNumber; 
      } 
      var strCorousel = lstMX.Find(x => x.MAX_PN.Equals(name)).Carousel; 
      strCorousel = (String.IsNullOrEmpty(strCorousel)) ? CarouselName : strCorousel; 
      sb.Append(String.Format("{0}:{1}", strCorousel, carouselNumber).PadRight(15)); 

      sb.Append("\r\n"); 
     } 
     System.IO.File.WriteAllText(@"D:\output.TXT", sb.ToString()); 
    } 

private string RemoveWhiteSpace(string str) 
    { 
     str = str.Replace(" ", " "); 
     if (str.Contains(" ")) 
      str = RemoveWhiteSpace(str); 
     return str; 
    } 

输入文本文件:

Designator MAX PN Footprint Center-X(mm) Center-Y(mm) 

"AC1" "100-0177" "CAPC1608N" "7.239" "82.677" 
"AC2" "100-0177" "CAPC1608N" "4.445" "85.471" 
"C1" "100-0211" "0805M - CAPACITOR" "14.745" "45.72" 
"C2" "100-0230" "CAPC3225N" "83.388" "58.42" 
"C3" "100-0145" "CAPC1608N" "101.543" "73.025" 
"C10" "100-0145" "CAPC1608N" "109.163" "73.025" 

在输出文本文件,我需要像下面如果我们把案例C1:

C1 100-0211 0805M_-_CAPACITOR 14.745  45.72 Location:3 
    //here only problem is i am not getting the underscore in 0805M - CAPACITOR. 
    //i am getting as same.. like 0805M - CAPACITOR 
+1

请显示您的'RemoveWhiteSpace()'方法的代码。 – STLDeveloper 2014-11-06 23:35:58

+1

我错了,或者用下划线替换空格只发生在头文件而不是输出行上? – Steve 2014-11-06 23:39:31

+0

我也想知道'textfile'是什么类型。我没有看到它的定义。 – STLDeveloper 2014-11-06 23:45:13

回答

1

看样子您只需在标头上调用String.Replace的输出st你正在生成的戒指。

你需要将它应用于文本在代码中的这一部分(内for环路):

for (int c = 0; c < cells.Length; c++) 
    sb.Append(textfile[i].Cells[c].PadRight(cols[c])); 

这应该是

for (int c = 0; c < cells.Length; c++) 
    sb.Append(textfile[i].Cells[c].Replace(" ","_").PadRight(cols[c])); 

因为我看不到你的全输出文件,我不确定这是你看到的问题。

+0

已添加@STL开发者代码 – 2014-11-07 02:08:49