2013-09-03 10 views
6

Come posso confrontare due stringhe Numero di versione?Confrontando due numeri di versione

Per esempio: 3.1.1 e 3.1.2.5.4

Ora ho bisogno di sapere se 3.1.2.5.4 è superiore a 3.1.1, ma non so come fare questo. Qualcuno può aiutarmi?

Grazie in anticipo!

+0

http://stackoverflow.com/questions/7004655/comparing-strings-with-the-format-2-0- 1-2-0-09 – satheeshwaran

+0

possibile duplicato del [confrontare i numeri di versione in Objective C] (http://stackoverflow.com/questions/1978456/compare-version-numbers-in-objective-c) – Amar

risposta

8

codice di esempio:

NSString* v1 = @"3.1.1"; 
NSString* v2 = @"3.1.2.5.4"; 

if ([v1 compare:v2 options:NSNumericSearch] == NSOrderedDescending) { 
    NSLog(@"%@ is greater than %@",v1,v2); 
} 

Dalla documentazione Apple per Comparing and sorting strings.

+1

grazie. funziona come un fascino! caso – AmiiQo

+3

bordo: non funziona se si finisce in '.0' e l'altro non, ad esempio, '@" 3.1 "' e '@" 3.1.0 "'. Le soluzioni divise (vedere la risposta di @ pArAs), o il riempimento, possono occuparsi di questo. – CRD

+1

È vero. Ma il controllo della versione può essere noioso. Controlla la mia categoria NSString che cattura tutti i casi limite su github; https://github.com/stijnster/NSString-compareToVersion '[@ "1.2.2.4" compareToVersion: @ "1.2.2.5"];' – Stijnster

2

Sì, è possibile confrontare le versioni, si rimanda il codice qui sotto:

public class Comparision { 

    string ver1, ver2; 
    public static void main(String args[]){ 
    string ver1Split[] = ver1.split('.'); 
    string ver2Split[] = ver2.split('.'); 

    for (int i = 0; i < ver1Split.length; ++i) { 
     if (ver2Split == i) { 
      return ver1 + " is larger"; 
     } 

     if (ver1Split[i] == ver2Split[i]) { 
      continue; 
     } 
     else if (ver1Split[i] > ver1Split[i]) { 
      return ver1 + " is larger"; 
     } 
     else { 
      return ver2 + " is larger"; 
     } 
     if (ver1Split.length != ver2Split.length) { 
      return ver2 + " is larger"; 
     } 
     return "versions are equal"; 
    } 
} 
+0

è possibile inizializzare le variabili stringa ver1 e ver2 fornendo i numeri di versione attuali. – Paras

+0

vostro funziona anche, ma la soluzione di Vin è più facile per le mie esigenze specifiche. Ma comunque grazie! – AmiiQo