字符串比较大小问题

蓝莓之恋9527 2020-10-28 06:45:50
字符串1.0.1.8这种类型怎么比较大小
eg: 1.0.1.8期望小于1.0.1.10
...全文
13491 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Vicali 2020-11-21
  • 打赏
  • 举报
回复
替换掉字符串中的所有点 转为int类型 比较大小
public static void main(String[] args) {
	String s1 = "1.0.1.8";
	String s2 = "1.0.1.10";
	
	s1 = s1.replaceAll("\\.", "");
	s2 = s2.replaceAll("\\.", "");
	int n1 =Integer.parseUnsignedInt(s1);
    int n2 =Integer.parseUnsignedInt(s2);
    boolean result = n2>n1;
    System.out.println(result);
}
蓝莓之恋9527 2020-10-30
  • 打赏
  • 举报
回复
引用 3 楼 情非彼岸花 的回复:
直接去掉小数点,然后转成int做对比不可以吗

你说的这个可以试下
蓝莓之恋9527 2020-10-30
  • 打赏
  • 举报
回复
引用 4 楼 datafansbj 的回复:
这是 IP 地址吗?IP 地址可以转换成无符号整数,然后就可以比较大小了。

不是ip地址,是一个版本号
蓝莓之恋9527 2020-10-30
  • 打赏
  • 举报
回复
引用 7 楼 datafansbj 的回复:
[quote=引用 5 楼 蓝莓之恋9527 的回复:][quote=引用 4 楼 datafansbj 的回复:]这是 IP 地址吗?IP 地址可以转换成无符号整数,然后就可以比较大小了。

不是ip地址,是一个版本号[/quote]

版本号有专用的类可供使用:System.Version,可以直接使用 >、<、= 进行比较。

Version ver1 = Version.Parse("1.0.1.8");
Version ver2 = Version.Parse("1.0.1.10");
Console.Write(ver1 > ver2);

输出 false[/quote]
你咋知道我是C#里面要用
datafansbj 2020-10-30
  • 打赏
  • 举报
回复
引用 5 楼 蓝莓之恋9527 的回复:
[quote=引用 4 楼 datafansbj 的回复:]这是 IP 地址吗?IP 地址可以转换成无符号整数,然后就可以比较大小了。

不是ip地址,是一个版本号[/quote]

版本号有专用的类可供使用:System.Version,可以直接使用 >、<、= 进行比较。

Version ver1 = Version.Parse("1.0.1.8");
Version ver2 = Version.Parse("1.0.1.10");
Console.Write(ver1 > ver2);

输出 false
蓝莓之恋9527 2020-10-29
  • 打赏
  • 举报
回复
引用 1 楼 pengbo19851985 的回复:
将字符串通过split进行数组化,然后按照数组的长度和索引分别进行比较,就行了
比如1.0.1.8转化的数组为a
a的长度为4
a[0]=1
a[1]=0
a[2]=1
a[3]=8
1.0.1.10转化为数组b
b长度也为4
b[0]=1
b[1]=0
b[2]=1
b[3]=10

然后找到两个数组中最小长度的那个数组,按这个数组的长度进行索引
int iShortLength = a.length<=b.length?a.length:b.length;
for (int i = 0; i < iShortLength; i++) {
if (a[i] > b[i]) {
system.out.println("第一个数大");
break;
} else if (a[i] < b[i]) {
system.out.println("第二个数大");
break;
}

if (i == iShortLength - 1) {
system.out.println("两个数一样大");
}


}

for


这样是不是太麻烦了,还有简单点的办法吗
pengbo19851985 2020-10-29
  • 打赏
  • 举报
回复
将字符串通过split进行数组化,然后按照数组的长度和索引分别进行比较,就行了 比如1.0.1.8转化的数组为a a的长度为4 a[0]=1 a[1]=0 a[2]=1 a[3]=8 1.0.1.10转化为数组b b长度也为4 b[0]=1 b[1]=0 b[2]=1 b[3]=10 然后找到两个数组中最小长度的那个数组,按这个数组的长度进行索引 int iShortLength = a.length<=b.length?a.length:b.length; for (int i = 0; i < iShortLength; i++) { if (a[i] > b[i]) { system.out.println("第一个数大"); break; } else if (a[i] < b[i]) { system.out.println("第二个数大"); break; } if (i == iShortLength - 1) { system.out.println("两个数一样大"); } } for
datafansbj 2020-10-29
  • 打赏
  • 举报
回复
这是 IP 地址吗?IP 地址可以转换成无符号整数,然后就可以比较大小了。
咦哟~~~ 2020-10-29
  • 打赏
  • 举报
回复
直接去掉小数点,然后转成int做对比不可以吗

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧