OS版本字符串比较

时间:2018-06-13 14:39:42

标签: java android versioning

根据https://developer.android.com/reference/android/os/Build.VERSION.html#RELEASE,Build.VERSION.RELEASE包含类似“3.4b5”的字符串,而我期待用点(。)分隔的数字序列,如“8.1.0”。

关于何时会看到操作系统版本中的字符以及将当前操作系统版本与固定字符串(例如7.0.0)进行比较的良好比较逻辑的任何想法。

1 个答案:

答案 0 :(得分:0)

为了比较版本号,你可以这样做:

//  compare two strings, e.g. "5.8.0" with "1.88.3"
public int compare(String v1, String v2) {
    String s1 = normalisedVersion(v1);  //  normalized to "   5   8   0"
    String s2 = normalisedVersion(v2);  //  normalized to "   1  88   3"
    return s1.compareTo(s2);            //  returns -1 for lower, 0 equal and 1 for greater
}

public String normalisedVersion(String version) {
    return normalisedVersion(version, ".", 4);
}

public String normalisedVersion(String version, String sep, int maxWidth) {
    String[] split = Pattern.compile(sep, Pattern.LITERAL).split(version);
    StringBuilder sb = new StringBuilder();
    for (String s : split) {
        sb.append(String.format("%" + maxWidth + 's', s));
    }
    return sb.toString();
}