【问题标题】:OS Version string comparison操作系统版本字符串比较
【发布时间】:2018-06-13 14:39:42
【问题描述】:

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

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

【问题讨论】:

标签: java android versioning


【解决方案1】:

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

//  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();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 2012-02-05
    • 2018-07-24
    相关资源
    最近更新 更多