C# 解析文件以获取C语言中的名称列表#

C# 解析文件以获取C语言中的名称列表#,c#,C#,我正在分析我的/etc/passwd文件,该文件如下所示: root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync 我希望我

我正在分析我的
/etc/passwd
文件,该文件如下所示:

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
我希望我的程序返回以下内容:

root
bin
daemon
...
sync
我目前的代码是:

Regex expression = new Regex(@"^\w*");
foreach (Match myMatch in expression.Matches(txt))
{
    txtout.Text = myMatch.ToString();    
}

但是,我只返回带有此代码的
root
。如何返回每一行?

如果添加指定要使用多行支持的RegexOption,将获得每一行。我不知道从我的头顶,我认为这是RegexOptions枚举的一部分

问候,


Sebastiaan

如果添加指定要使用多行支持的RegexOption,您将获得每一行。我不知道从我的头顶,我认为这是RegexOptions枚举的一部分

问候,


Sebastiaan

显然,您需要在文件中的每一行上循环,而不是将文件的内容作为一个整体(作为字符串)查看。这是单核细胞增多症吗

 Regex expression = new Regex(@"^\w*");
 var passwd = new StreamReader( "/etc/passwd" );
 var users = new List<string>();
 while (passwd.Peek() >= 0)
 {
     var line = passwd.ReadLine();
     foreach (Match myMatch in expression.Matches(txt))
     {
         users.Add( myMatch.ToString() );
     }
 }

 // now users will contain all the users in the file
Regex表达式=新的Regex(@“^\w*”);
var passwd=新的StreamReader(“/etc/passwd”);
var users=新列表();
while(passwd.Peek()>=0)
{
var line=passwd.ReadLine();
foreach(在expression.Matches(txt)中匹配myMatch)
{
添加(myMatch.ToString());
}
}
//现在,用户将包含文件中的所有用户

显然,您需要在文件中的每一行上循环,而不是将文件的内容作为一个整体(作为字符串)查看。这是单核细胞增多症吗

 Regex expression = new Regex(@"^\w*");
 var passwd = new StreamReader( "/etc/passwd" );
 var users = new List<string>();
 while (passwd.Peek() >= 0)
 {
     var line = passwd.ReadLine();
     foreach (Match myMatch in expression.Matches(txt))
     {
         users.Add( myMatch.ToString() );
     }
 }

 // now users will contain all the users in the file
Regex表达式=新的Regex(@“^\w*”);
var passwd=新的StreamReader(“/etc/passwd”);
var users=新列表();
while(passwd.Peek()>=0)
{
var line=passwd.ReadLine();
foreach(在expression.Matches(txt)中匹配myMatch)
{
添加(myMatch.ToString());
}
}
//现在,用户将包含文件中的所有用户

使用正则表达式是一种过分的做法,如果我正确理解了您的意图,您希望检索第一个
':'
字符之前的子字符串

using (StreamReader reader = new StreamReader ("/etc/passwd")) {
    string line = "";
    while((line = reader.ReadLine()) != null) {
         string userName = line.Substring(0, line.IndexOf(':'));
    }
}

使用正则表达式是一种过分的做法,如果我正确理解了您的意图,那么您希望检索第一个
:'
字符之前的子字符串

using (StreamReader reader = new StreamReader ("/etc/passwd")) {
    string line = "";
    while((line = reader.ReadLine()) != null) {
         string userName = line.Substring(0, line.IndexOf(':'));
    }
}

如果你不能把一个像样的问题组合在一起,你希望如何得到像样的答案???Zimzim,你如何得到“txt”?有断线吗?米奇,快点。至少给出一个关于你的边界的指示,这样zimzim可以改进这个问题。我从textbox获得txt,用户fillzimzim,下定决心。它是一个(多行)文本框还是一个文件?如果你不能把一个像样的问题放在一起,你希望如何得到像样的答案???Zimzim,你如何得到“txt”?有断线吗?米奇,快点。至少给出一个关于你的边界的指示,这样zimzim可以改进这个问题。我从textbox获得txt,用户fillzimzim,下定决心。它是一个(多行)文本框还是一个文件?@arul,我使用它,但我得到了一个错误:无法创建抽象类或接口系统的实例。IO.TextReader',我想让用户用文本框填充一些流,哦,对不起,我写下了我头上的代码,现在应该可以了。@arul,我使用这个,但我得到了这个错误:无法创建抽象类或接口系统的实例。IO.TextReader',我希望用户用textbox填充someStream,Oops,对不起,写下了我头顶上的代码,现在应该可以正常工作了。