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,我将如何选择要显示的位?