غالبًا ما تكون هناك حاجة إلى وظيفة مقارنة أرقام الإصدار في الأنظمة التي تتضمن جانب العميل ، ولكن لا يمكن استخدام مقارنة أرقام الإصدار تمامًا وفقًا لطرق مقارنة السلسلة مثل المقارنة ؛
هذا يتطلب منا تلخيص القواعد المشتركة لأرقام الإصدار ، وتصميم خوارزمية المقارنة وتغليفها في طريقة عامة لاستخدامها:
أرقام الإصدار المعتادة هي: 1.3.20.8 ، 6.82.20160101 ، 8.5a/8.5c ، إلخ ؛
تتمثل القاعدة العامة أولاً في تقسيم سلسلة الإصدار على رقم DOT ، ثم قارن الإصدار الرئيسي مع الإصدار الرئيسي ، ومقارنة هذا الإصدار مع هذا الإصدار ، بحيث يمكن مقارنته واحدًا تلو الآخر حتى يتم تقسيم الحجم ؛
تجدر الإشارة إلى أن العديد من طرق مقارنة أرقام الإصدار تقوم بتحويل السلسلة إلى int أو النوع المزدوج أولاً ، والتي قد لا تكون عالمية لأنها قد تحتوي على رسائل ، مثل 8.5 درجة مئوية ؛
الطريقة العامة هي مقارنة السلسلة المقسمة كسلسلة ، ولكن قبل مقارنة السلسلة ، قارن عدد البتات أولاً ؛
مثال على طريقة لمقارنة أرقام الإصدار:
/*** قارن حجم رقم الإصدار. إذا كان الأول كبيرًا ، فقم بإرجاع رقم إيجابي ، فالأخير كبير ويعيد رقمًا سالبًا ، وإذا كان الأمر نفسه ، فاحصل على 0 * param version1 * param version2 * @regurn */ public static int compareversion (string 1 ، string prose2) يلقي الاستثناء {if (vers1 == null || vers2 == null) } String [] versionArray1 = version1.split ("//.") ؛// لاحظ أن هذه تطابق منتظم ، و". " لا يمكن استخدامها ؛ String [] versionArray2 = version2.split ("//.") ؛ int idx = 0 ؛ int minlength = math.min (versionarray1.length ، versionArray2.Length) ؛ // الحصول على الحد الأدنى لقيمة الطول int diff = 0 ؛ بينما (idx <minlength && (diff = versionArray1 [idx] .length () - versionArray2 [idx] .length ()) == 0 // قارن الطول أولاً && (diff = versionarray1 [idx] .compareto (versionarray2 [idx])) == 0) } // إذا تم تقسيم الحجم ، فسيتم إرجاعه مباشرة. إذا لم يتم تقسيم الحجم ، فقم بمقارنة عدد البتات مرة أخرى. النسخ الفرعي للرقم كبير. Diff = (Diff! = 0)؟ Diff: versionArray1.Length - versionArray2.Length ؛ إرجاع فرق. } ملاحظة: معلمة SPLIT Method هي تعبير مطابق منتظم ، ولا يمكن استخدامه ". ("." ("." لمطابقة أي قيمة في التعبير العادي). تحتاج إلى استخدام "//.
وبهذه الطريقة ، اقسم أولاً إلى صفائف فرعية ، ثم قارن أرقام التخريب واحدًا تلو الآخر. عند مقارنة أرقام التخريب ، قارن أولاً عدد الأرقام. إذا كان عدد الأرقام كبيرة ، فسيكون عدد الأرقام كبيرة. عندما يكون عدد الأرقام هو نفسه ، ثم قارن وفقًا لطريقة مقارنة السلسلة ؛
إذا تم الانتهاء من جميع المقارنات (تتم مقارنة أحد أرقام الإصدار) ، فابحث عن رقم الإصدار يحتوي على المزيد من أرقام التخريب ، أي ، طول الصفيف المقسم ، وأرقام التخريب أكبر ؛
وبهذه الطريقة ، تعتبر المواقف المختلفة أكثر شمولاً ويتم مقارنة حجم رقم الإصدار ؛ بما في ذلك اللواحق الحرفية يمكن استخدامها أيضًا ؛
على سبيل المثال ، "9.9" ، "10.8.8.6" ، إذا قارنت مباشرة بالسلسلة ، فسيكون الأول أكبر وسيكون الأخير أصغر ، وهو أمر خاطئ بشكل واضح ؛ بعد التجزئة ، تتم مقارنة أول الإصدار 9 و 10 الرئيسيين ، ومن الأرقام ، ستكون النتيجة كبيرة ؛
على سبيل المثال ، "9.9b" ، "9.8a" ، وما إلى ذلك قابلة للتطبيق أيضًا ، لكنها لا تنطبق إذا تم استخدام طريقة التحويل إلى int أو double.