例如:
struserip="192.168.0.1";
strip1="190.0.0.1";
strip2="200.0.0.1";我想比较struserip是否在strip1和strip2之间。
最初的想法是把ip地址的.去掉然后比较数字,显然不对,把ip地址转换为System.Net.IPAddress类型,可该类型并不支持比较符(><=).有什么好的办法来比较struserip在strip1和strip2之间呢?

解决方案 »

  1.   

    最简单的比较办法:把IP地址转换为32位整数比较,可以通过IPADDRESS进行转换。
      

  2.   

    正规式 分解字符串 然后比较
    参考msdn regex类
      

  3.   

    用split把字符串折开放到一个数组中
      

  4.   

    最简单的比较办法:把IP地址转换为32位整数比较,可以通过IPADDRESS进行转换。
    上述方法不对啊。我测试的结果
    120.199.199.1 转换的数字居然大于127.0.0.1的值,可见此方法并不可靠呢
      

  5.   

    并不是不可靠,而是比较的时候,我们认为IP地址大的数据反而要小。因为转换为整数后,是从IP低字节开始的,也就是说,IP中的高字节是对应整数的低字节。从这点看,这个比较确实存在一点问题,但还是可以比较的。