1. 程式人生 > >章節號比較排序(A.1、B.2.1、C.4)

章節號比較排序(A.1、B.2.1、C.4)

java 章節號 排序

        private static int compareSerialNum(String str1,String str2){
		if(str1.equals(str2)){
			return 0;
		}
		if(!str1.contains(".")&&!str2.contains(".")){
			return str1.compareTo(str2);
		}else{
			int i1=0,i2=0;
			char c1=‘*‘,c2=‘*‘;
			
			if(str1.matches("[A-Z].*")){
				c1 = str1.charAt(0);
			}else{
				if(str1.contains(".")){
					i1 = Integer.parseInt(str1.substring(0,str1.indexOf(".")));
				}else{
					i1 = Integer.parseInt(str1);
				}
			}
			
			if(str2.matches("[A-Z].*")){
				c2 = str2.charAt(0);
			}else{
				if(str2.contains(".")){
					i2 = Integer.parseInt(str2.substring(0,str2.indexOf(".")));
				}else{
					i2 = Integer.parseInt(str2);
				}
			}
			
			if(c1!=c2){
				return c1-c2;
			}else{
				if(i1!=i2){
					return i1-i2;
				}
			}
			
		}
		char[] charArr1 = str1.toCharArray();
		char[] charArr2 = str2.toCharArray();
		int length1 = str1.length();
		int length2 = str2.length();
		int len = length1>length2?length2:length1;
		for(int i=0;i<len;){
			if(charArr1[i] == charArr2[i]){
				i++;
			}else if(charArr1[i] == ‘.‘){
				return -1;
			}else if(charArr2[i] == ‘.‘){
				return 1;
			}else{
				return charArr1[i] - charArr2[i];
			}
			
		}
		return length1-length2;
	}


本文出自 “shihou” 博客,謝絕轉載!

章節號比較排序(A.1、B.2.1、C.4)