Sinh mã số kế tiếp dựa vào một mẫu cho trước bằng C# hoặc Java
Đăng lúc: 10:47 AM - 22/12/2023 bởi Charles Chung - 556Trong bài viết này tôi sẽ hướng dẫn các bạn viết hàm sinh mã kế tiếp dựa vào mẫu cho trước, code với java và c#
Giới thiệu
Trong hầu hết các cơ sở dữ liệu quan hệ (RDBMS) đều hỗ trợ tính năng sinh mã tự động, tuy nhiên nó chỉ hỗ trợ kiểu dữ liệu số nguyên (int). Trong một số trường hợp, các ứng dụng yêu cầu sinh mã theo một mẫu nào đó ví dụ:
- HD20230209-001 (Mã được nối bởi từ HD với chuỗi năm tháng ngày và 3 ký tự cuối là số thứ tự)
- SP0001234 (Mã được nối bởi từ SP với 6 ký tự cuối là số thứ tự)
- Và còn nhiều dạng khác
Trong bài này tôi sẽ hướng dẫn các bạn sử dụng code C# hoặc Java để sinh ra mã kế tiếp dựa vào mẫu cho trước SP000001 (Mã được nối bởi từ SP với 6 ký tự cuối là số, mã sau lớn hơn mã trước 1 đơn vị)
Ví dụ với C# và Java
Code với C#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
internal class Program { /// <summary> /// Phương thức sinh ra mã kế tiếp /// </summary> /// <param name="PrefixLengthString">Độ dài chuỗi ở đầu mã số (ví dụ: SP thì nhập vào là 2)</param> /// <param name="id">Mã số hiện tại (ví dụ: SP000234)</param> /// <returns>Trả về mã kế tiếp của id (ví dụ: SP000235)</returns> public static string GenerateNextId(int PrefixLengthString, string id) { //cắt ra phần số string strnumber = id.Substring(PrefixLengthString); //chuyển chuỗi thành số int number = 0; if (!int.TryParse(strnumber, out number)) return "Convert string to number fail, please check input parameters!"; //tăng số lên 1 đơn vị number++; //lấy độ dài của số sau khi tăng int length = number.ToString().Length; if (length > strnumber.Length) return "Out of numbers to generate codes , please check input parameters!"; //lấy độ dài chuỗi số ban đầu int lengthOrigin = id.Length - PrefixLengthString; //xử lý thêm số 0 vào phía trước string result = ""; for (int i = 0; i < lengthOrigin - length; i++) { result += "0"; } //nối số không với số đã tăng lên result += number.ToString(); //lấy phần ký hiệu ở đầu mã số string prefix = id.Substring(0, PrefixLengthString); //nối ký hiệu đó với chuỗi số đã tăng return prefix + result; } static void Main(string[] args) { //kiểm tra thử Console.WriteLine(GenerateNextId(2, "SP000000"));//->SP0000001 Console.WriteLine(GenerateNextId(2, "SP001235"));//-> SP001236 Console.WriteLine(GenerateNextId(2, "SP009999"));//->SP010000 Console.WriteLine(GenerateNextId(1, "SP001235"));//lỗi convert do tham số độ dài truyền sai Console.WriteLine(GenerateNextId(2, "SP999999"));//hết số Console.WriteLine(GenerateNextId(6, "SP000099"));//hết số do tham số độ dài truyền sai } } |
Kết quả
Code với Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
public class Program { /** * * @param PrefixLengthString:độ dài chuỗi ở đầu mã số (ví dụ: SP thì nhập vào là 2) * @param id: mã số hiện tại (ví dụ: SP000234) * @return Trả về mã kế tiếp của id (ví dụ: SP000235) */ public static String GenerateNextId(int PrefixLengthString, String id) { //cắt ra phần số String strnumber = id.substring(PrefixLengthString); //chuyển chuỗi thành số int number = 0; try{ number=Integer.parseInt(strnumber); }catch(Exception ex){ return "Convert string to number fail, please check input parameters!"; } //tăng số lên 1 đơn vị number++; //lấy độ dài của số sau khi tăng int length = String.valueOf(number).length(); if (length > strnumber.length()) return "Out of numbers to generate codes , please check input parameters!"; //lấy độ dài chuỗi số ban đầu int lengthOrigin = id.length() - PrefixLengthString; //xử lý thêm số 0 vào phía trước String result = ""; for (int i = 0; i < lengthOrigin - length; i++) { result += "0"; } //nối số không với số đã tăng lên result += String.valueOf(number); //lấy phần ký hiệu ở đầu mã số String prefix = id.substring(0, PrefixLengthString); //nối ký hiệu đó với chuỗi số đã tăng return prefix + result; } public static void main(String[] args) { //kiểm tra thử System.out.println(GenerateNextId(2, "SP000000"));//->SP0000001 System.out.println(GenerateNextId(2, "SP001235"));//-> SP001236 System.out.println(GenerateNextId(2, "SP009999"));//->SP010000 System.out.println(GenerateNextId(1, "SP001235"));//lỗi convert do tham số độ dài truyền sai System.out.println(GenerateNextId(2, "SP999999"));//hết số System.out.println(GenerateNextId(6, "SP000099"));//hết số do tham số độ dài truyền sai } } |
Kết quả
Bạn nào cần sinh mã theo mẫu nào cứ liên hệ thầy Charles Chung, code bằng mọi ngôn ngữ
thay lời cảm ơn!
Các bài cũ hơn
- Lambda Expression và Functional Interface trong java 8 (09:11 AM - 21/12/2023)
- Các loại inheritance trong Java-Cách nhận biết extends và implements (10:37 AM - 15/12/2023)
- Chuyển đổi tiếng việt có dấu thành không dấu bằng Java áp dụng tạo URL thân thiện với các bộ máy tìm kiếm (SEO) (08:48 PM - 09/12/2023)
- Thêm Description Attribute cho từng Enum và chuyển đổi Enum thành một List Item trong .NET (05:33 PM - 08/12/2023)
- Tạo ứng dụng Angular gọi Restful Webservice (JAX-RS, Jersey) (09:44 PM - 06/12/2023)