ฟังก์ชั่นของการเปรียบเทียบหมายเลขเวอร์ชันมักจำเป็นในระบบที่เกี่ยวข้องกับฝั่งไคลเอ็นต์ แต่การเปรียบเทียบหมายเลขเวอร์ชันไม่สามารถใช้งานได้อย่างสมบูรณ์ตามวิธีการเปรียบเทียบสตริงเช่นการเปรียบเทียบ
สิ่งนี้ต้องการให้เราสรุปกฎทั่วไปของหมายเลขเวอร์ชันออกแบบอัลกอริทึมการเปรียบเทียบและห่อหุ้มไว้ในวิธีการทั่วไปที่จะใช้:
หมายเลขเวอร์ชันปกติคือ: 1.3.20.8, 6.82.20160101, 8.5a/8.5c, ฯลฯ ;
กฎทั่วไปคือการหารสตริงเวอร์ชันเป็นอันดับแรกตามหมายเลข dot จากนั้นเปรียบเทียบเวอร์ชันหลักกับเวอร์ชันหลักและเปรียบเทียบเวอร์ชันนี้กับรุ่นนี้เพื่อให้สามารถเปรียบเทียบได้ทีละหนึ่งตามลำดับจนกว่าขนาดจะถูกแบ่ง
เป็นที่น่าสังเกตว่าวิธีการหลายวิธีในการเปรียบเทียบหมายเลขเวอร์ชันแปลงสตริงเป็น int หรือสองประเภทก่อนซึ่งอาจไม่เป็นสากลเพราะอาจมีตัวอักษรเช่น 8.5c;
วิธีทั่วไปคือการเปรียบเทียบสตริงที่แบ่งออกเป็นสตริง แต่ก่อนเปรียบเทียบสตริงให้เปรียบเทียบจำนวนบิตก่อน
ตัวอย่างของวิธีการเปรียบเทียบหมายเลขเวอร์ชัน:
/*** เปรียบเทียบขนาดของหมายเลขเวอร์ชัน หากอดีตมีขนาดใหญ่ให้ส่งกลับจำนวนบวกหลังมีขนาดใหญ่และส่งคืนจำนวนลบและถ้าเหมือนกันให้ส่งคืน 0 * @param เวอร์ชัน 1 * @param version2 * @return */ การเปรียบเทียบ int คงที่สาธารณะ } 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 = vertionarray1 [idx] .length () - vertionarray2 [idx] .length ()) == 0 // เปรียบเทียบความยาวก่อน && (diff = vertionarray1 [idx] } // ถ้าขนาดถูกแบ่งออกมันจะถูกส่งคืนโดยตรง หากขนาดไม่ได้ถูกแบ่งให้เปรียบเทียบจำนวนบิตอีกครั้ง รุ่นย่อยของจำนวนมีขนาดใหญ่ diff = (diff! = 0)? Diff: VersionArray1.Length - VersionArray2.Length; คืนกลับ; - หมายเหตุ: พารามิเตอร์วิธีแยกเป็นนิพจน์การจับคู่ปกติและไม่สามารถใช้เป็น " ("." ("." เพื่อให้ตรงกับค่าใด ๆ ในนิพจน์ทั่วไป) คุณต้องใช้ "//." เพื่อพิจารณาว่าจะถูกแบ่งตามหมายเลขจุด
ด้วยวิธีนี้แบ่งออกเป็นอาร์เรย์ย่อยก่อนจากนั้นเปรียบเทียบหมายเลขการโค่นล้มทีละหนึ่ง เมื่อเปรียบเทียบหมายเลขการโค่นล้มให้เปรียบเทียบจำนวนตัวเลขก่อน หากจำนวนตัวเลขมีขนาดใหญ่จำนวนตัวเลขจะมีขนาดใหญ่ เมื่อจำนวนตัวเลขเท่ากันจากนั้นเปรียบเทียบตามวิธีการเปรียบเทียบสตริง
หากการเปรียบเทียบทั้งหมดเสร็จสมบูรณ์ (หนึ่งในหมายเลขเวอร์ชันถูกเปรียบเทียบ) จากนั้นดูที่หมายเลขเวอร์ชันที่มีหมายเลขการโค่นล้มมากขึ้นนั่นคือความยาวของอาร์เรย์ที่แบ่งแยกและหมายเลขการโค่นล้มมีขนาดใหญ่ขึ้น
ด้วยวิธีนี้สถานการณ์ต่าง ๆ ได้รับการพิจารณาอย่างละเอียดมากขึ้นและเปรียบเทียบขนาดหมายเลขรุ่น สามารถใช้คำต่อท้ายจดหมายได้เช่นกัน
ตัวอย่างเช่น "9.9", "10.8.8.6" หากคุณเปรียบเทียบโดยตรงโดยสตริงอดีตจะใหญ่ขึ้นและหลังจะเล็กลงซึ่งเห็นได้ชัดว่าผิด; หลังจากการแบ่งส่วนจะมีการเปรียบเทียบรุ่นแรกที่สำคัญ 9 และ 10 และจากตัวเลขผลลัพธ์จะมีขนาดใหญ่
ตัวอย่างเช่น "9.9b", "9.8a" ฯลฯ ก็ใช้ได้เช่นกัน แต่ก็ไม่สามารถใช้ได้หากใช้วิธีการแปลงเป็น int หรือสองเท่า