我輸入的文本數據,如下列:解析和IP的增量地址
AX AMDBCEFG 103.12.96.0 103.12.98.255
AX AMDBDEFG 103.11.64.0 103.13.64.255
AX AMDBEEFG 103.14.24.0 103.14.24.255
我找的輸出是一個新的文本文件:
AX AMDBCEFG 103.12.96.0 103.12.96.255
AX AMDBCEFG 103.12.97.0 103.12.97.255
AX AMDBCEFG 103.12.98.0 103.12.98.255
AX AMDBDEFG 103.11.64.0 103.11.64.255
AX AMDBDEFG 103.12.64.0 103.12.64.255
AX AMDBDEFG 103.13.64.0 103.13.64.255
AX AMDBEEFG 103.14.24.0 103.14.24.255
First line
從輸入遞增3rd Octet
只即96 to 98
。
Second line
從輸入增加2nd Octet
,即只有11 to 13
。
Third line
來自輸入remains same
。
我至今嘗試:
我對待IP定義爲字符串,然後的.
在此基礎上是做的相當繁瑣的事情上分裂。
string sFile = "D:\\input.txt";
string sNewFilePath = Path.Combine(@"D:\\Output", Path.GetFileName(sFile));
string[] arrLines = File.ReadAllLines(sFile);
using (StreamWriter writer = new StreamWriter(sNewFilePath))
{
foreach (string sLine in arrLines)
{
string[] arrTab = sLine.Split('\t');
string sIP1 = arrTab[2].Trim();
string sIP2 = arrTab[3].Trim();
string[] arrIP1 = sIP1.Split('.');
string[] arrIP2 = sIP2.Split('.');
int iOct1_IP1 = Convert.ToInt32(arrIP1[1]);
int iOct1_IP2 = Convert.ToInt32(arrIP2[1]);
int iOct2_IP1 = Convert.ToInt32(arrIP1[2]);
int iOct2_IP2 = Convert.ToInt32(arrIP2[2]);
int iOct1_Diff = iOct1_IP2 - iOct1_IP1;
int iOct2_Diff = iOct2_IP2 - iOct2_IP1;
if (iOct1_Diff > 0)
{
//loop & increment
//write lines to file
}
else if (iOct2_Diff > 0)
{
//loop & increment
//write lines to file
}
}
}
在繼續我進一步之前,我發現我可以使用System.Net.IPAddress。
System.Net.IPAddress ip1 = System.Net.IPAddress.Parse(sIP1.Trim());
System.Net.IPAddress ip2 = System.Net.IPAddress.Parse(sIP2.Trim());
if (ip1.Equal(ip2))
{
//...
}
我的問題,是否有任何使用上述類或任何其他技術來達到此目的的首選方式?
對於對用於增量IP地址的術語缺乏瞭解,感到抱歉。
謝謝。
什麼你想要實現嗎?我不明白你的問題或你想解決什麼問題。 – Jehof 2014-09-02 09:32:21
想要一個顯示IP地址的開始和結束範圍的輸出文件(如示例所示)。 – Hassan 2014-09-02 09:36:49