如何将字符串转换为System.Net,C#/。net 3.5中的IPAddress
我试过这个,但我收到此错误“无法将类型'字符串'转换为'System.Net.IPAddress'”
public void Form1_Load(object sender, EventArgs e)
{
IPHostEntry host;
string localIP = "?";
host = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress ip in File.ReadAllLines("proxy.txt"))
{
if (ip.AddressFamily.ToString() == "InterNetwork")
{
localIP = ip.ToString();
textBox1.Text = ip.ToString();
}
}
}
答案 0 :(得分:17)
使用静态IPAddress.Parse
方法将string
解析为IPAddress
:
foreach (var ipLine in File.ReadAllLines("proxy.txt"))
{
var ip = IPAddress.Parse(ipLine);
if (ip.AddressFamily.ToString() == "InterNetwork")
{
localIP = ip.ToString();
textBox1.Text = ip.ToString();
}
}
如果文件中的行不总是有效的IP地址,您可能需要考虑使用TryParse
来避免抛出任何异常。
答案 1 :(得分:4)
IPAddress.Parse
方法接受字符串。
foreach (string line in File.ReadAllLines("proxy.txt"))
{
IPAddress ip = IPAddress.Parse(line);
// ...
}
答案 2 :(得分:3)
foreach (IPAddress ip in File.ReadAllLines("proxy.txt").Select(s => IPAddress.Parse(s))) {
// ...
}
答案 3 :(得分:2)
您可以使用IPAddress.Parse方法 例如:
private static void parse(string ipAddress)
{
try
{
IPAddress address = IPAddress.Parse(ipAddress);
}
答案 4 :(得分:1)
您可以使用IPAddress.Parse来执行此操作。
答案 5 :(得分:1)
你可以做的一件事是...... 在foreach循环中,您需要一个与您的集合匹配的实例。我的意思是,如果你有一个字符串列表,例如:
List<string> lMyList
程序员无法使用int或double的实例迭代此列表...
foreach (int lIterator in lMyList)
{ // code
}
这根本不起作用,它会引发关于&#34; int&#34;的语法错误。不是一种&#34;字符串&#34;。
要解决这个问题,您需要像这样遍历列表
foreach (string lIterator in lMyList)
{ // code
}
现在,问你的问题。 IPAddress是它自己的类和类型。人们不能简单地将它变成一种字符串。但是,有办法解决这个问题。将字符串显式转换为IP地址。但是,您需要首先遍历列表。
foreach (string lLine in File.ReadAllLines("proxy.txt"))
{
// Code In Here
}
这将迭代文本文件中的所有行。由于它是一个文本文件,因此返回一个字符串列表。为了迭代字符串列表,程序员需要一个字符串局部变量来迭代它。
接下来,您需要将当前字符串解析为本地IP地址实例。有几种方法可以做到这一点,1)你可以简单地解析(System.Net.IPAddress.Parse())字符串,或者你可以将TryParse(IPAddress.TryParse())字符串写入IPAddress。
Method One:
// This will parse the current string instance to an IP Address instance
IPAddress lIPAddress = IPAddress(lLine);
Method Two:
IPAddress lIPAddress; // Local instance to be referenced
// At runtime, this will "Try to Parse" the string instance to an IP Address.
// This member method returns a bool, which means true or false, to say,
// "Hey, this can be parsed!". Your referenced local IP Address instance would
// have the value of the line that was parsed.
if (IPAddress.TryParse(lLine, out lIPAddress))
{
// Code
}
好的,现在我们已经解决了这个问题。让我们完成这件事。
// Iterates over the text file.
foreach (string lLine in File.ReadAllLines("proxy.txt"))
{
// Create a local instance of the IPAddress class.
IPAddress lIPAddress;
// Try to Parse the current string to the IPAddress instance.
if (IPAddress.TryParse(lLine, out lIPAddress))
{
// This means that the current line was parsed.
// Test to see if the Address Family is "InterNetwork"
if (string.Equals("InterNetwork", lIPAddress.AddressFamily.ToString()))
{
TextBox1.Text = lIPAddress.ToString();
}
}
}
我希望这有帮助!