我正在读取文本文件并进行一些对齐更改,同时删除文本文件第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
答案 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]));
因为我看不到你的完整输出文件,所以我不确定这是你看到的问题。