从列表中搜索字符串到文本文件 C# 控制台
Search for string from list into text file c# console
我需要检查我的 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 并将其与文本文件进行比较吗?
我的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。
您应该重新考虑代码中的一些其他事项,例如将 WebClient
替换为 HttpClient
,在您的客户端周围使用 using
语句。
在您的代码中,如果 MAC 地址匹配,它将 resultrr 设置为 true,然后在下一次迭代时立即再次将其设置为 false。
如果您希望它在单场比赛中 return 为真,您可以将其拆分为它自己的方法,并且只在第一场比赛中 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 的赋值。不过,没有理由不早点跳出循环,除非你正在做其他事情,比如计算出现的次数。
我需要检查我的 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 并将其与文本文件进行比较吗?
我的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。
您应该重新考虑代码中的一些其他事项,例如将 WebClient
替换为 HttpClient
,在您的客户端周围使用 using
语句。
在您的代码中,如果 MAC 地址匹配,它将 resultrr 设置为 true,然后在下一次迭代时立即再次将其设置为 false。
如果您希望它在单场比赛中 return 为真,您可以将其拆分为它自己的方法,并且只在第一场比赛中 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 的赋值。不过,没有理由不早点跳出循环,除非你正在做其他事情,比如计算出现的次数。