java/golang/js版本号比较

我们一般使用版本号控制版本,并且做一些判断或者向下兼容。一般版本号会使用semver 规范,格式为 Major.Minor.Patch,其中Major、Minor、Patch均为整数。
比较版本号的大小可参考如下:

java
public static int compareVersion(String srcString, String anotherString) {
		String[] v1 = srcString.split("\\.");
		String[] v2 = anotherString.split("\\.");
		
		List<String> list1 = new ArrayList<String>(Arrays.asList(v1));
		List<String> list2 = new ArrayList<String>(Arrays.asList(v2));
		
		int lim = Math.max(v1.length, v2.length);
		
		while (list1.size() < lim) {
			list1.add("0");
		}
		
		while (list2.size() < lim) {
			list2.add("0");
		}
		
		for (int i = 0; i < lim; i++) {
			int num1 = Integer.parseInt(list1.get(i)); 
			int num2 = Integer.parseInt(list2.get(i)); 
	
			if (num1 > num2) {
				return 1;
			} else if (num1 < num2) {
				return -1;
			}
		}

		return 0;
	}
public static void main(String[] args) {
	System.out.println(compareVersion("1.2.1", "1.2.0")); // 1
	System.out.println(compareVersion("1.2.1", "1.2.1")); // 0
	System.out.println(compareVersion("1.2.1", "1.2.3")); // -1
}

golang

func compareVersion(src string, other string) int {

	v1 := strings.Split(src, ".")
	v2 := strings.Split(other, ".")

	var lim int
	if len(v1) > len(v2) {
		lim = len(v1)
	} else {
		lim = len(v2)
	}

	for {
		if len(v1) >= lim {
			break
		}
		v1 = append(v1, "0")
	}

	for {
		if len(v2) >= lim {
			break
		}
		v2 = append(v2, "0")
	}

	for i := 0; i < lim; i++ {
		num1, _ := strconv.Atoi(v1[i])
		num2, _ := strconv.Atoi(v2[i])

		if num1 > num2 {
			return 1
		}
		if num1 < num2 {
			return -1
		}
	}

	return 0
}

fmt.Println(compareVersion("1.2.1","1.2.0")) // 1
fmt.Println(compareVersion("1.2.1","1.2.1")) // 0
fmt.Println(compareVersion("1.2.1","1.2.2")) // -1
js
function compareVersion(v1, v2) {
  v1 = v1.split('.')
  v2 = v2.split('.')
  var len = Math.max(v1.length, v2.length)
 
  while (v1.length < len) {
    v1.push('0')
  }
  while (v2.length < len) {
    v2.push('0')
  }
 
  for (var i = 0; i < len; i++) {
    var num1 = parseInt(v1[i])
    var num2 = parseInt(v2[i])
 
    if (num1 > num2) {
      return 1
    } else if (num1 < num2) {
      return -1
    }
  }
  return 0
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值