C# 将文本文件中的字符串拆分为另一个列表

C# 将文本文件中的字符串拆分为另一个列表,c#,parsing,list,C#,Parsing,List,嗨,我知道标题听起来可能有点混乱,但我读的是一个包含很多行数据的文本文件 Example 12345 Test 34567 Test2 我一次读一行,然后添加到列表中 using (StreamReader reader = new StreamReader("Test.txt")) { string line; while ((line = reader

嗨,我知道标题听起来可能有点混乱,但我读的是一个包含很多行数据的文本文件

Example
12345 Test 
34567 Test2
我一次读一行,然后添加到列表中

using (StreamReader reader = new StreamReader("Test.txt"))
                    {

                        string line;
                        while ((line = reader.ReadLine()) != null)
                        {
                            list.Add(line);

                    }

                }
然后如何将1234从测试中分离出来,以便在需要类似列表(1)的数据时只提取第一列数据。PAR[1]将是12345,而列表(2)。PAR[2]将是test2


我知道这听起来有点模糊,但我希望有人能理解

可能是这样的:

string test="12345 Test";
var ls= test.Split(' ');
这将得到一个字符串数组。您可以使用
ls[0]
ls[1]
获取它们


如果您只需要12345,那么就可以选择
ls[0]

可能是这样的:

string test="12345 Test";
var ls= test.Split(' ');
这将得到一个字符串数组。您可以使用
ls[0]
ls[1]
获取它们


如果您只需要12345,那么可以选择
ls[0]

当您有一个文本字符串时,可以使用
Split()
方法将其拆分为多个部分。如果您确定每个单词(由一个或多个空格分隔)都是一列,您只需写:

string[] columns = line.Split(' ');
该函数有多个重载,您可以指定是否跳过空白字段(例如,
列[1]
在由两个单词组成但由两个空格分隔的行中为空)。如果确定列数,也可以修正该限制(因此,如果最后一列之后的任何文本都将被视为单个字段)

在您的情况下(仅在列表中添加第一列),您可以写:

if (String.IsNullOrWhiteSpace(line))
 continue;

string[] columns = line.TrimLeft().Split(new char[] { ' ' }, 2);
list.Add(columns[0]);
第一个检查是跳过空行或仅由空格组成的行。
TrimLeft()
用于删除行首的空格(如果有)。第一列不能为空(因为
trimlefit()
所以您甚至不需要使用
StringSplitOptions。使用额外的
if(columns.Length>1)
删除mptyentries
。最后,如果文件足够小,只需调用
file.ReadAllLines()即可在内存中读取它
并通过一点LINQ简化一切:

list.Add(
 File.ReadAllLines("test.txt")
 .Where(x => !String.IsNullOrWhiteSpace(x))
 .Select(x => x.TrimLeft().Split(new char[] { ' ' }, 2)[0]));

请注意,对于第一个参数,您可以指定多个有效分隔符。

当您有一个文本字符串时,您可以使用
Split()
方法将其拆分为多个部分。如果您确定每个单词(由一个或多个空格分隔)都是一列,您可以简单地编写:

string[] columns = line.Split(' ');
该函数有多个重载,您可以指定是否跳过空白字段(例如,
列[1]
在由两个单词组成但由两个空格分隔的行中可能为空)。如果确定列数,您也可以修复该限制(因此,如果最后一列之后的任何文本将被视为单个字段)

在您的情况下(仅在列表中添加第一列),您可以写:

if (String.IsNullOrWhiteSpace(line))
 continue;

string[] columns = line.TrimLeft().Split(new char[] { ' ' }, 2);
list.Add(columns[0]);
第一个检查是跳过空行或仅由空格组成的行。
trimlefit()
是从行的开头删除空格(如果有)。第一列不能为空(因为
trimlefit()
所以你甚至不需要使用
StringSplitOptions。使用额外的
if(columns.Length>1)删除mptyentries
。最后,如果文件足够小,只需调用
file.ReadAllLines()
即可在内存中读取它,并使用一点LINQ简化一切:

list.Add(
 File.ReadAllLines("test.txt")
 .Where(x => !String.IsNullOrWhiteSpace(x))
 .Select(x => x.TrimLeft().Split(new char[] { ' ' }, 2)[0]));

请注意,对于第一个参数,您可以指定多个有效分隔符。

如果您对字符串[]的列表感到满意,您只需执行以下操作:

        var list = new List<string[]>();
        using (StreamReader reader = new StreamReader("Test.txt"))
        {
            string line;
            while ((line = reader.ReadLine()) != null)
            {
                list.Add(line.Split(' '));
            }
        }

        string firstWord = list[0][0]; //12345 
        string secondWord = list[0][1]; //Test
var list=newlist();
使用(StreamReader=newstreamreader(“Test.txt”))
{
弦线;
而((line=reader.ReadLine())!=null)
{
列表.添加(行.拆分(“”));
}
}
字符串firstWord=list[0][0];//12345
字符串secondWord=list[0][1];//测试

如果您对字符串[]的列表满意,只需执行以下操作:

        var list = new List<string[]>();
        using (StreamReader reader = new StreamReader("Test.txt"))
        {
            string line;
            while ((line = reader.ReadLine()) != null)
            {
                list.Add(line.Split(' '));
            }
        }

        string firstWord = list[0][0]; //12345 
        string secondWord = list[0][1]; //Test
var list=newlist();
使用(StreamReader=newstreamreader(“Test.txt”))
{
弦线;
而((line=reader.ReadLine())!=null)
{
列表.添加(行.拆分(“”));
}
}
字符串firstWord=list[0][0];//12345
字符串secondWord=list[0][1];//测试

当您有多个空格时

Regex r = new Regex(" +");
string [] splitString = r.Split(stringWithMultipleSpaces);

当您有多个空格时

Regex r = new Regex(" +");
string [] splitString = r.Split(stringWithMultipleSpaces);

如果我只想显示12345,我将如何选择要显示的位?如果我只想显示12345,我将如何选择要显示的位?