String有compareTo有方法用来比较字符串.
解决方案 »
- 要详细解答,谢谢啦
- 有人做过客服系统吗?在web页面点击一个浮动窗体,然后进入与客服对话的页面
- hibernate里joined-subclass 怎么用
- struts2 中的<s:submit><s:reset>为何位置会变成2行?如何改啊
- JSP开发我想用Fileupload多文件上传,但又要生成缩略图,多文件不好取出,怎么办呢?
- BMP和CMP能否在一个事务控制之下
- 关于部署的错误,高手请来帮帮忙,在线等
- 各位高手:我是个菜鸟,帮帮我好吗/ 谢谢各位
- hibernate多对多——配不出来,跪求指点
- 是不是用JAVA做的BS项目里 javabean就对应数据库一个表 javabean必须有一个主键ID 对应数据库里表的主键 是这样吗
- Struts出错 严重: No action instance for path /login could be created
- 请问在hibernate中能否使用sql中的insert into select的这种语句
String ip1=..
String ip2=..
String[] ip1s=ip1.split(":");
String[] ip2s=ip2.split(":");
印象中ipv6地址是8部分,利用冒号隔开的,这样先把8个部分放到数组里.
然后循环处理,利用Integer.parseInt(ip1s[i],16);将字符串换算成对应的整数,然后对应比较就可以了。
算法实现应该不难。
public class Test {
public static void main(String[] args) {
String str1 = "11.22.333.1";
String str1s[] = str1.split("\\.");
String str2 = "222.222.222.222";
String str2s[] = str2.split("\\.");
int result = 0;
for(int i=0;i<str1s.length;i++){
int temp1 = Integer.parseInt(str1s[i]);
int temp2 = Integer.parseInt(str2s[i]);
if(temp1==temp2)continue;
else{
result = (temp1<temp2?-1:1);
break;
}
}
System.out.println(result);
}
}
public static void main(String[] args) {
String str1 = "11.22.333.1";
String str1s[] = str1.split("\\.");
String str2 = "222.222.222.222";
String str2s[] = str2.split("\\.");
int result = 0;
for(int i=0;i<str1s.length;i++){
int temp1 = Integer.parseInt(str1s[i]);
int temp2 = Integer.parseInt(str2s[i]);
if(temp1==temp2)continue;
else{
result = (temp1<temp2?-1:1);
break;
}
}
System.out.println(result);
}
}这个例子的正确的,我给你验证了一下
关键是用split截取,然后重新赋给个数组,就可以实现了
public class Main { public static void main(String[] args) {
String str1 = "3ffe:3201:1401::c8ff:fe4d:db39:5";
String str2 = "3ffe:3201:1401::c8ff:fe4d:db39:9";
int result = compare(str1, str2);
System.out.println(result);
}
/*
* 输入:两个表示ipv6地址的字符串
* 输出:1表示第一个地址大于第二个地址,0表示两个地址相同,-1表示小于
*/ public static int compare(String ip1, String ip2) {
String[] ip1s = ip1.split(":");
String[] ip2s = ip2.split(":");
//循环比较对应的项
for (int i = 0; i < ip1s.length; i++) {
if (ip1s[i].equals("")) {
if (ip2s[i].equals("")) { //对应的项都位空,往下比较
continue;
} else {
return -1;
}
} else {
if (ip2s[i].equals("")) {
return 1;
} else { //确定对应的项不位空,讲字符串转换位整数进行比较
int value1 = Integer.parseInt(ip1s[i], 16);
int value2 = Integer.parseInt(ip2s[i], 16);
if (value1 > value2) {
return 1;
} else if (value1 < value2) {
return -1;
} else {
continue;
}
}
}
}
//循环结束,表示两个串表示的地址相同
return 0;
}
}
看看ipv6的地址格式你就明白了。
返回的是true自然就相同,false反之
split(“.”);
顺序存入数组,然后逐个比较.思路2(推荐):
使用分隔符表达式吧
java.util.StringTokenizer.