Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从文本文件中删除最后一列_C#_String_Visual Studio 2010_Text_Text Files - Fatal编程技术网

C# 如何从文本文件中删除最后一列

C# 如何从文本文件中删除最后一列,c#,string,visual-studio-2010,text,text-files,C#,String,Visual Studio 2010,Text,Text Files,我想从我的文本文件中删除最后一列。我怎样才能做到这一点。 我的文本文件是以制表符分隔的 输入文本文件如下所示: Designator MAX PN Footprint Center-X(mm) Center-Y(mm) Location "C10" "100-0009" "1206 - CAPACITOR" "122.492" "69.469" "BOTTOM" "DOC1" "100-0009" "1206 - CAPAC

我想从我的文本文件中删除最后一列。我怎样才能做到这一点。 我的文本文件是以制表符分隔的

输入文本文件如下所示:

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

 "C10"  "100-0009"  "1206 - CAPACITOR"  "122.492"   "69.469"     "BOTTOM"
 "DOC1" "100-0009"  "1206 - CAPACITOR"  "264.211"   "12.814"     "BOTTOM"
 "C102" "100-0009"  "1206 - CAPACITOR"  "251.346"   "11.201"     "BOTTOM"
 "C105" "100-0009"  "1206 - CAPACITOR"     "0"         "0"     "BOTTOM"
 "PCB"  "100-0009"  "1206 - CAPACITOR"  "306.197"   "29.909"      "BOTTOM"
 "C107" "100-0009"  "1206 - CAPACITOR"  "273.685"   "29.527"     "BOTTOM"
我想从文本文件中删除名为Location的整个列。。并处理输出

代码段:

  public void do_name()
{
    string[] search_text = new string[] { "PCB", "DOC", "PCB1", "DOC1" };
    string old;
    StringBuilder sb = new StringBuilder();
    using (StreamReader sr = File.OpenText(textBox1.Text))
    {
        while ((old = sr.ReadLine()) != null)
        {
            if (old.Contains(search_text[0]) || old.Contains(search_text[1]) ||
                old.Contains(search_text[2]) || old.Contains(search_text[3]) ||
               old.Split('\t').Contains(@"""0"""))
                continue;
            else
                sb.AppendLine(old);
        }
        sr.Close();
    }
    File.WriteAllText(textBox1.Text, sb.ToString());
}

一行包含6列,因此
old.Split('\t')
返回6个字符串的数组(如果输入格式一致)

在循环中,您可以选择前5个元素并将阵列粘合在一起:

string new = string.Join("\t", old.Split('\t').Take(5));

一行包含6列,因此
old.Split('\t')
返回6个字符串的数组(如果输入格式一致)

在循环中,您可以选择前5个元素并将阵列粘合在一起:

string new = string.Join("\t", old.Split('\t').Take(5));

一行包含6列,因此
old.Split('\t')
返回6个字符串的数组(如果输入格式一致)

在循环中,您可以选择前5个元素并将阵列粘合在一起:

string new = string.Join("\t", old.Split('\t').Take(5));

一行包含6列,因此
old.Split('\t')
返回6个字符串的数组(如果输入格式一致)

在循环中,您可以选择前5个元素并将阵列粘合在一起:

string new = string.Join("\t", old.Split('\t').Take(5));
这将完成以下工作:

    string[] lines = File.ReadAllLines(@"c:\test.txt");
    string[] newLines = lines.Select(l =>
    {
        if (!string.IsNullOrEmpty(l)) // keep the empty rows
        {
            return l.Remove(l.LastIndexOf(' ')).TrimEnd();
        }

        return l;
    }).ToArray();
    File.WriteAllLines(@"c:\newtest.txt", newLines);
这将完成以下工作:

    string[] lines = File.ReadAllLines(@"c:\test.txt");
    string[] newLines = lines.Select(l =>
    {
        if (!string.IsNullOrEmpty(l)) // keep the empty rows
        {
            return l.Remove(l.LastIndexOf(' ')).TrimEnd();
        }

        return l;
    }).ToArray();
    File.WriteAllLines(@"c:\newtest.txt", newLines);
这将完成以下工作:

    string[] lines = File.ReadAllLines(@"c:\test.txt");
    string[] newLines = lines.Select(l =>
    {
        if (!string.IsNullOrEmpty(l)) // keep the empty rows
        {
            return l.Remove(l.LastIndexOf(' ')).TrimEnd();
        }

        return l;
    }).ToArray();
    File.WriteAllLines(@"c:\newtest.txt", newLines);
这将完成以下工作:

    string[] lines = File.ReadAllLines(@"c:\test.txt");
    string[] newLines = lines.Select(l =>
    {
        if (!string.IsNullOrEmpty(l)) // keep the empty rows
        {
            return l.Remove(l.LastIndexOf(' ')).TrimEnd();
        }

        return l;
    }).ToArray();
    File.WriteAllLines(@"c:\newtest.txt", newLines);

只需在处理之前删除行中的最后一列

public void do_name()
{
    bool headerRead = false;
    bool layerColumnPresent = false;
    string[] search_text = new string[] { "PCB", "DOC", "PCB1", "DOC1" };
    string old;
    StringBuilder sb = new StringBuilder();
    using (StreamReader sr = File.OpenText(textBox1.Text))
    {
        while ((old = sr.ReadLine()) != null)
        {
            if (!headerRead)
            {
                layerColumnPresent = old.Substring(old.LastIndexOf("\t").ToLower()).Contains("layer")
                headerRead = true;
            }
            if (old.Length > 0 && layColumnPresent) // if not a zero length string
            {
                old = old.Substring(0, old.LastIndexOf("\t"));
            }
            if (old.Contains(search_text[0]) || old.Contains(search_text[1]) ||
                old.Contains(search_text[2]) || old.Contains(search_text[3]) ||
                old.Split('\t').Contains(@"""0"""))
                continue;
            else
                sb.AppendLine(old);
        }
        sr.Close();
   }
   File.WriteAllText(textBox1.Text, sb.ToString());
}

只需在处理之前删除行中的最后一列

public void do_name()
{
    bool headerRead = false;
    bool layerColumnPresent = false;
    string[] search_text = new string[] { "PCB", "DOC", "PCB1", "DOC1" };
    string old;
    StringBuilder sb = new StringBuilder();
    using (StreamReader sr = File.OpenText(textBox1.Text))
    {
        while ((old = sr.ReadLine()) != null)
        {
            if (!headerRead)
            {
                layerColumnPresent = old.Substring(old.LastIndexOf("\t").ToLower()).Contains("layer")
                headerRead = true;
            }
            if (old.Length > 0 && layColumnPresent) // if not a zero length string
            {
                old = old.Substring(0, old.LastIndexOf("\t"));
            }
            if (old.Contains(search_text[0]) || old.Contains(search_text[1]) ||
                old.Contains(search_text[2]) || old.Contains(search_text[3]) ||
                old.Split('\t').Contains(@"""0"""))
                continue;
            else
                sb.AppendLine(old);
        }
        sr.Close();
   }
   File.WriteAllText(textBox1.Text, sb.ToString());
}

只需在处理之前删除行中的最后一列

public void do_name()
{
    bool headerRead = false;
    bool layerColumnPresent = false;
    string[] search_text = new string[] { "PCB", "DOC", "PCB1", "DOC1" };
    string old;
    StringBuilder sb = new StringBuilder();
    using (StreamReader sr = File.OpenText(textBox1.Text))
    {
        while ((old = sr.ReadLine()) != null)
        {
            if (!headerRead)
            {
                layerColumnPresent = old.Substring(old.LastIndexOf("\t").ToLower()).Contains("layer")
                headerRead = true;
            }
            if (old.Length > 0 && layColumnPresent) // if not a zero length string
            {
                old = old.Substring(0, old.LastIndexOf("\t"));
            }
            if (old.Contains(search_text[0]) || old.Contains(search_text[1]) ||
                old.Contains(search_text[2]) || old.Contains(search_text[3]) ||
                old.Split('\t').Contains(@"""0"""))
                continue;
            else
                sb.AppendLine(old);
        }
        sr.Close();
   }
   File.WriteAllText(textBox1.Text, sb.ToString());
}

只需在处理之前删除行中的最后一列

public void do_name()
{
    bool headerRead = false;
    bool layerColumnPresent = false;
    string[] search_text = new string[] { "PCB", "DOC", "PCB1", "DOC1" };
    string old;
    StringBuilder sb = new StringBuilder();
    using (StreamReader sr = File.OpenText(textBox1.Text))
    {
        while ((old = sr.ReadLine()) != null)
        {
            if (!headerRead)
            {
                layerColumnPresent = old.Substring(old.LastIndexOf("\t").ToLower()).Contains("layer")
                headerRead = true;
            }
            if (old.Length > 0 && layColumnPresent) // if not a zero length string
            {
                old = old.Substring(0, old.LastIndexOf("\t"));
            }
            if (old.Contains(search_text[0]) || old.Contains(search_text[1]) ||
                old.Contains(search_text[2]) || old.Contains(search_text[3]) ||
                old.Split('\t').Contains(@"""0"""))
                continue;
            else
                sb.AppendLine(old);
        }
        sr.Close();
   }
   File.WriteAllText(textBox1.Text, sb.ToString());
}
var query=File.ReadLines(文件名)
.Where(line=>!search_text.Any(text=>line.Contains(text))//String.Join(“\t”,line.Split('\t')。Take(5));
writeAllines(newfilename,query);
编辑

Func<string, string> trim = s => s.Trim('“','”', '"', ' ' );

var query = File.ReadLines(filename)
            .Select(line => line.Split('\t'))
            .Where(parts => !parts.Any(part => search_text.Contains(trim(part))))
            .Where(parts => !parts.Any(part => trim(part) == "0"))
            .Select(parts => String.Join("\t", parts.Take(5)));
Func trim=s=>s.trim(“,”,“,”,“,”);
var query=File.ReadLines(文件名)
.Select(line=>line.Split('\t'))
.Where(parts=>!parts.Any(part=>search_text.Contains(trim(part)))
.其中(零件=>!零件.Any(零件=>修剪(零件)=“0”))
.Select(parts=>String.Join(“\t”,parts.Take(5)));
var query=File.ReadLines(文件名)
.Where(line=>!search_text.Any(text=>line.Contains(text))//String.Join(“\t”,line.Split('\t')。Take(5));
writeAllines(newfilename,query);
编辑

Func<string, string> trim = s => s.Trim('“','”', '"', ' ' );

var query = File.ReadLines(filename)
            .Select(line => line.Split('\t'))
            .Where(parts => !parts.Any(part => search_text.Contains(trim(part))))
            .Where(parts => !parts.Any(part => trim(part) == "0"))
            .Select(parts => String.Join("\t", parts.Take(5)));
Func trim=s=>s.trim(“,”,“,”,“,”);
var query=File.ReadLines(文件名)
.Select(line=>line.Split('\t'))
.Where(parts=>!parts.Any(part=>search_text.Contains(trim(part)))
.其中(零件=>!零件.Any(零件=>修剪(零件)=“0”))
.Select(parts=>String.Join(“\t”,parts.Take(5)));
var query=File.ReadLines(文件名)
.Where(line=>!search_text.Any(text=>line.Contains(text))//String.Join(“\t”,line.Split('\t')。Take(5));
writeAllines(newfilename,query);
编辑

Func<string, string> trim = s => s.Trim('“','”', '"', ' ' );

var query = File.ReadLines(filename)
            .Select(line => line.Split('\t'))
            .Where(parts => !parts.Any(part => search_text.Contains(trim(part))))
            .Where(parts => !parts.Any(part => trim(part) == "0"))
            .Select(parts => String.Join("\t", parts.Take(5)));
Func trim=s=>s.trim(“,”,“,”,“,”);
var query=File.ReadLines(文件名)
.Select(line=>line.Split('\t'))
.Where(parts=>!parts.Any(part=>search_text.Contains(trim(part)))
.其中(零件=>!零件.Any(零件=>修剪(零件)=“0”))
.Select(parts=>String.Join(“\t”,parts.Take(5)));
var query=File.ReadLines(文件名)
.Where(line=>!search_text.Any(text=>line.Contains(text))//String.Join(“\t”,line.Split('\t')。Take(5));
writeAllines(newfilename,query);
编辑

Func<string, string> trim = s => s.Trim('“','”', '"', ' ' );

var query = File.ReadLines(filename)
            .Select(line => line.Split('\t'))
            .Where(parts => !parts.Any(part => search_text.Contains(trim(part))))
            .Where(parts => !parts.Any(part => trim(part) == "0"))
            .Select(parts => String.Join("\t", parts.Take(5)));
Func trim=s=>s.trim(“,”,“,”,“,”);
var query=File.ReadLines(文件名)
.Select(line=>line.Split('\t'))
.Where(parts=>!parts.Any(part=>search_text.Contains(trim(part)))
.其中(零件=>!零件.Any(零件=>修剪(零件)=“0”))
.Select(parts=>String.Join(“\t”,parts.Take(5)));


@D Stanley有什么想法吗!!!请提前感谢@有什么想法吗!!!请提前感谢@有什么想法吗!!!请提前感谢@有什么想法吗!!!请提前感谢!!!我的行没有固定。。有时可能高达657。。。总有一天会达到700。。或者40岁的某个时候。。这是有变化的这起作用了。。但在我的循环中,它给出了一个错误。。请用我的完整答案更新你的代码。。THNAKSS应删除突出显示的。。线。。以编程方式paste.org/9721557#13,17,25my行不固定。。有时可能高达657。。。总有一天会达到700。。或者40岁的某个时候。。这是有变化的这起作用了。。但在我的循环中,它给出了一个错误。。请用我的完整答案更新你的代码。。THNAKSS应删除突出显示的。。线。。以编程方式paste.org/9721557#13,17,25my行不固定。。有时可能高达657。。。总有一天会达到700。。或者40岁的某个时候。。这是有变化的这起作用了。。但在我的循环中,它给出了一个错误。。请用我的完整答案更新你的代码。。THNAKSS应删除突出显示的。。线。。以编程方式paste.org/9721557#13,17,25my行不固定。。有时可能高达657。。。总有一天会达到700。。或者40岁的某个时候。。这是有变化的这起作用了。。但在我的循环中,它给出了一个错误。。请用我的完整答案更新你的代码。。THNAKSS应删除突出显示的。。线。。以编程方式Paste.org/9721557#13,17,25我确信OP希望将此合并到他的现有代码中,因此读写文件两次似乎有点过火。@L.B.现有代码已经使用streamreader读取文件以排除某些行。这个答案似乎是OP使用的建议,对吗?当OP将此代码添加到其现有代码中时,
File.ReadLines
StreamReader
都将读取该文件。这是不必要的,可以做一次。事实上,例如通过将OP的
if
转换为
Where
上的
ReadLines()<