Как обрезать IP-адрес, чтобы получить первые 3 его части? - PullRequest
6 голосов
/ 16 марта 2012

Мне нужно обрезать данный IP-адрес, чтобы получить первые 3 его части

Пример:

"192.168.1.20" ➨ "192.168.1."
"29.6.60.241" ➨ "29.6.60."

Ответы [ 5 ]

12 голосов
/ 16 марта 2012

String result = input.substring(0,input.lastIndexOf("."));

5 голосов
/ 16 марта 2012

Используя String.LastIndexOf () , все должно быть просто.

EDIT
Используя этот метод, вы можете найти последний «.». Тогда вам нужна подстрока до и (по-видимому) включающая этот «.». Что-то вроде:

string shortened = longIP.Substring(0,longIP.LastIndexOf(".")+1);
2 голосов
/ 16 марта 2012
string ip= "192.168.1.100";
string partial = ip.Substring(0,ip.LastIndexOf("."));
1 голос
/ 16 марта 2012
string sHostName = Dns.GetHostName();
IPHostEntry ipE = Dns.GetHostByName(sHostName);
IPAddress[] IpA = ipE.AddressList;
for (int i = 0; i < IpA.Length; i++)
{
    if(IpA[i].AddressFamily == AddressFamily.InterNetwork)
    {
        Console.WriteLine("IP Address {0}: {1} {2} ", i, IpA[i].ToString() , sHostName);
        string[] x = IpA[i].ToString().Split('.');
        Console.WriteLine("{0}.{1}.{2}.", x[0], x[1], x[2]);
    }
}
0 голосов
/ 16 марта 2012

Внутренне, IP-адреса (IPv4 и IPv6) являются просто битовыми строками.IPv4 подходит для 32 бит, а IPv6 - для 64 бит.Таким образом, реальный ответ на ваш вопрос состоит в том, чтобы просто замаскировать биты, которые вы хотите сохранить, используя логическую операцию AND, а остальные равны 0.

В большинстве случаев вы можете указать IP-адрес вместе с маской.Правило состоит в том, что для запроса, является ли A тем же, что и B, вы проверяете биты, для которых бит маски является истинным.

Это приводит к общему обозначению: люди пишут IP-адрес, например 124.51.3 / 17сказать, что первая часть описывает IP-адрес (может быть, IPv4) и что / 17 означает, что следует учитывать первые 17 бит.

...