From 8f87da840cc16936e77402cf229237023098382b Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期二, 09 九月 2025 13:32:15 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.Core/Utils/StringUtils/StringUtils.cs |   91 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 90 insertions(+), 1 deletions(-)

diff --git a/FlexJobApi.Core/Utils/StringUtils/StringUtils.cs b/FlexJobApi.Core/Utils/StringUtils/StringUtils.cs
index a303260..6a3a4b1 100644
--- a/FlexJobApi.Core/Utils/StringUtils/StringUtils.cs
+++ b/FlexJobApi.Core/Utils/StringUtils/StringUtils.cs
@@ -1,4 +1,5 @@
-锘縰sing Furion.FriendlyException;
+锘縰sing Furion.DataValidation;
+using Furion.FriendlyException;
 using Mapster.Utils;
 using System;
 using System.Collections.Generic;
@@ -48,6 +49,12 @@
             return null;
         }
 
+        public static decimal? ToDecimal(this string str)
+        {
+            if (str.IsNotNull() && decimal.TryParse(str, out var @int)) return @int;
+            return null;
+        }
+
         public static T? ToEnum<T>(this string str, string requiredMessage = null)
              where T : struct
         {
@@ -77,5 +84,87 @@
                 return singularName + "s";
             }
         }
+
+        public static bool CheckIsIdentityNumber18(this string identity)
+        {
+            return identity.IsNotNull() && identity.TryValidate(EnumValidationTypes.ValiIdentity).IsValid && identity.Length == 18;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鎬у埆
+        /// </summary>
+        /// <param name="identity"></param>
+        /// <returns></returns>
+        public static EnumUserGender? GetGender(this string identity)
+        {
+            if (identity.CheckIsIdentityNumber18())
+            {
+                return identity[16] % 2 == 0
+                    ? EnumUserGender.Female
+                    : EnumUserGender.Male;
+            }
+            else
+            {
+                return null;
+            }
+        }
+
+        /// <summary>
+        /// 鑾峰彇鐢熸棩
+        /// </summary>
+        /// <param name="identity"></param>
+        /// <returns></returns>
+        public static DateTime? GetBirthday(this string identity)
+        {
+            if (identity.CheckIsIdentityNumber18())
+            {
+                return new DateTime(
+                    identity.Substring(6, 4).ToInt()!.Value,
+                    identity.Substring(10, 2).ToInt()!.Value,
+                    identity.Substring(12, 2).ToInt()!.Value);
+            }
+            else
+            {
+                return null;
+            }
+        }
+
+        /// <summary>
+        /// 鑾峰彇骞撮緞
+        /// </summary>
+        /// <param name="identity"></param>
+        /// <returns></returns>
+        public static int? GetAge(this string identity)
+        {
+            if (identity.CheckIsIdentityNumber18())
+            {
+                var birthday = identity.GetBirthday();
+                return birthday.GetAge();
+            }
+            else
+            {
+                return null;
+            }
+        }
+
+        /// <summary>
+        /// 鐢熸垚闅忔満瀛楃涓�
+        /// </summary>
+        /// <param name="length"></param>
+        /// <returns></returns>
+        public static string GenerateRandomString(int length)
+        {
+            if (length <= 0) return null;
+            var random = new Random();
+            var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
+            var result = new StringBuilder(length);
+            for (int i = 0; i < length; i++)
+            {
+                // 浠庡瓧绗﹂泦涓殢鏈洪�夋嫨涓�涓瓧绗�
+                int index = random.Next(chars.Length);
+                result.Append(chars[index]);
+            }
+            return result.ToString();
+        }
     }
 }

--
Gitblit v1.9.1