输出文本文件没有给我下划线符号

时间:2014-11-06 23:22:31

标签: c# visual-studio-2010 visual-studio replace stringreader

我正在读取文本文件并进行一些对齐更改,同时删除文本文件第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 个答案:

答案 0 :(得分:1)

您似乎只在正在生成的输出字符串的标题上调用String.Replace

您需要将其应用于代码的此部分中的文本(在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]));

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