我想创建一个从文件中读取的C#应用程序,查找特定的字符串(单词)。我不知道会怎么样。
我的文件如下:
hostname: localhost
我怎样才能阅读' localhost'只是部分?
using (StreamReader sr = File.OpenText(config))
{
string s = "";
while ((s = sr.ReadLine()) != null)
{
string hostname = s;
Console.WriteLine(hostname);
}
}
^(up)从文件中读取所有内容。
答案 0 :(得分:1)
根据您的代码,您将文件内容存储在string hostname
中,因此现在可以将hostname
分割为这样:
String[] byParts = hostname.split(':')
byPart[1] will contain 'locahost' <br/>
byPart[0] will contain 'hostname'<br/>
或者,如果您有情况,您将始终使用hostname: localhost
获取文件,那么您可以使用:
hostname.Contains("localhost")
接下来,您可以使用if()
来比较您的逻辑部分。
希望它有所帮助。
答案 1 :(得分:0)
using (var sr = File.OpenText(path))
{
string line;
while ((line = sr.ReadLine()) != null)
{
if (line.Contains("localhost"))
{
Console.WriteLine(line);
}
}
}
这将逐行读取文件,如果该行包含localhost,它会将该行写入控制台。这当然会经历所有的线路,你可能想要在找到线路后打破或做其他事情。或者不是,取决于您的要求。
答案 2 :(得分:0)
这是未经测试的!
以下代码段利用了Regex的捕获组功能。它将在当前行中寻找完全匹配。如果匹配成功,它将打印出捕获的值。
// Define regex matching your requirement
Regex g = new Regex(@"hostname:\s+(\.+?)"); // Matches "hostname:<whitespaces>SOMETEXT"
// Capturing SOMETEXT as the first group
using (var sr = File.OpenText(path))
{
string line;
while ((line = sr.ReadLine()) != null) // Read line by line
{
Match m = g.Match(line);
if (m.Success)
{
// Get value of first capture group in regex
string v = m.Groups[1].Value;
// Print Captured value ,
// (interpolated string format $"{var}" is available in C# 6 and higher)
Console.WriteLine($"hostname is {v}");
break; // exit loop if value has been found
// this makes only sense if there is only one instance
// of that line expected in the file.
}
}
}