2012-03-16 5 views
5

私のようなそれの最初の3部IPアドレス文字列をトリミングして最初の3つの部分を取得する方法は?

取得するために与えられたIPAddressをトリミングする必要があります: "192.168.1"

"192.168.1.20" を➨
"29.6.60.241"➨ "29.6.60。"

ありがとうございます。

+2

IPv6アドレスはどうですか? –

+0

@ Mr.Disappointment、あなたのエイリアスがあなたのコメントに先行する:D –

答えて

11

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

+0

ありがとう:) 文字列結果= input.substring(0、input.lastIndexOf( "。"))+ "。 –

5

String.LastIndexOf()を使用すると簡単です。

EDIT
この方法を使用すると、最後の '。'を見つけることができます。次に、それまでの部分文字列が必要です(明らかに)。ような何か:

内部
string shortened = longIP.Substring(0,longIP.LastIndexOf(".")+1); 
+0

'.'を含める必要があるなら、それは' lastIndexOf' + 1でしょうか? –

+0

@ Moo-Juice - あなたは正しく、更新されました –

2
string ip= "192.168.1.100"; 
string partial = ip.Substring(0,ip.LastIndexOf(".")); 
0
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

@ Mr.Disappointment yeaあなたはそれについて忘れました..私は答えを編集しました –

0

は、IPアドレス(IPv4とIPv6)は、単にビット列をされています。 IPv4は32ビットに適合し、IPv6は64ビットに適合します。あなたの疑問に対する真の答えは、論理AND演算を使用して保持したいビットをマスクし、他のビットを0にすることです。ほとんどの場合、マスクと共にIPアドレスを指定することになります。 AがBと同じかどうかを調べるには、マスクビットが真であるビットをチェックするというルールがあります。

これは、124.51.3/17のようなIPアドレスを書いて、最初の部分がIPアドレス(おそらくIPv4)を表し、/ 17が最初の17ビットが1である検討する。

関連する問題