在文本文件c#控制台中搜索列表中的字符串



我需要检查我的mac地址是否存在于包含许多mac地址的文件中?

public static string ismac;
public static bool resultrr;
string path = Path.GetTempPath()+"555.txt";
WebClient clienst = new WebClient();
clienst.DownloadFile(@"http://localhost/test/mac.txt",path);
string[] ssv = File.ReadAllLines(path);
foreach (string items in ssv)
{
foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
{
ismac= nic.GetPhysicalAddress().ToString();
if (items.Contains(ismac) == false)
{
resultrr = false;
}
else
{
resultrr = true;
}
}
Console.ReadKey();
}

我感到困惑,有什么帮助可以获得工作界面mac并将其与文本文件进行比较吗?

My Visual Studio仍在更新中。我把这个写在记事本上,所以请原谅打字错误。

因此,只要对现有代码进行最小的更改,这应该可以工作-

public static string ismac;
public static bool resultrr;
string path = Path.GetTempPath()+"555.txt";
WebClient clienst = new WebClient();
clienst.DownloadFile(@"http://localhost/test/mac.txt",path);
string[] ssv = File.ReadAllLines(path);
foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
{
ismac = nic.GetPhysicalAddress().ToString();
resultrr = ssv.Any(x => x.Contains(ismac));
if(resultrr) break;
}
Console.ReadKey();

如果你的mac在列表中,这应该设置resultrr的值为true。

您应该在代码中重新考虑一些事情,比如用HttpClient替换WebClient,在客户端周围使用using语句。

在您的代码中,如果MAC地址匹配,它会将resultrr设置为true,然后在下一次迭代中立即将其再次设置为false。

如果您希望它在单个匹配中返回true,您可以将其拆分为自己的方法,并在第一个匹配中仅返回return true

public bool MACFound()
{
…
string[] ssv = File.ReadAllLines(path);
foreach (string items in ssv)
{
foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
{
ismac= nic.GetPhysicalAddress().ToString();
if (items.Contains(ismac) == true)
{
return true;
}
}
}
return false;
}

如果不是,您至少需要在循环开始之前将returnrr设置为false,并在循环中删除赋值为false。不过,除非你在做其他事情,比如计算出现的次数,否则没有理由不早点脱离循环。

最新更新