比较字符串中的一组数字

时间:2017-01-10 13:12:23

标签: android string arraylist replace split

我正在尝试为我的应用程序制作一些版本检查器。 我们的想法是比较两个字符串中的数字,如果一组数字大于另一个,则找到一个新版本。

oldString = 360 some - File v1.52.876 [build 2546]
newString = 360 some - File v1.53.421 [build 2687]

我需要比较两个字符串中'v'之后的设置数字,因为文件前面还可以有数字(360),如上例所示。

以下方法检查 arraylist loadTrackedItems ),其中包含要再次检查新收到的项目的文件( checkItemTrack < /强>)。

但我无法获得正确的数字。 有没有更好的方法来做到这一点?,有人可以这么善良和帮助。

提前谢谢。

public static boolean newTrackedVersion(String checkItemTrack) {
        final List<String> tracking = new ArrayList<String>(loadTrackedItems);
        boolean supported = false;
        for (final String u : tracking) {
            if (checkItemTrack.contains(u)) {
                supported = true;

                // get the index of the last 'v' character
                int trackindex = checkItemTrack.lastIndexOf("v");

                String newItem = checkItemTrack.replaceAll("[a-zA-Z]", "").replace("\\s+", "")
                        .replaceAll("[-\\[\\]^/,'*:.!><~@#$%+=?|\"\\\\()]+", "");
                String inList = u.replaceAll("[a-zA-Z]", "").replace("\\s+", "")
                        .replaceAll("[-\\[\\]^/,'*:.!><~@#$%+=?|\"\\\\()]+", "");

                long newTrack = Long.parseLong(newItem.trim());
                long inTrackList = Long.parseLong(inList.trim());

                if (newTrack > inTrackList) {
                    //Toast.makeText(context,"New version found: " + checkItemTrack, Toast.LENGTH_LONG).show();
                    Log.w("NEW VERSION ", checkItemTrack);
                    Log.w("OLD VERSION ", u);
                }
                break;
            }
        }
        return supported;
    }

1 个答案:

答案 0 :(得分:0)

如果你只收到两个字符串来比较这个解决方案就可以试试吧。

String oldString = "360 some - File v1.52.876 [build 2546]";
String newString = "360 some - File v1.53.421 [build 2687]";
String oldTemp = oldString.substring(oldString.indexOf('v'), oldString.indexOf('[')).trim();
String newTemp = newString.substring(newString.indexOf('v'), newString.indexOf('[')).trim();
int res = newTemp.compareTo(oldTemp);
if(res == 1){
    //newString is higher
}else if(res == 0){
    //both are same
}else if(res == -1){
    //oldString is higher
}