using PaintDotNet.Base.SettingModel; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace PaintDotNet.Base.CommTool { /// /// 命名规则辅助工具类 /// public static class NamingRuleHelper { private static ConfigModel configModel; private static string ruleName; private static string ruleGain; /// /// 按命名规则生成名字 /// /// /// public static string GetNameFromXml(ConfigModel model, string ruleName,string ruleGain) { string nameStr = ""; if (model != null) { configModel = model; if (!string.IsNullOrEmpty(configModel.NameFormat) && configModel.NameFormat.IndexOf('%') != -1) nameStr = SplitStringToRuleList(); else nameStr = "pic" + GetContinueNum(); } else nameStr = "pic" + GetContinueNum(); NamingRuleHelper.ruleName = ruleName; NamingRuleHelper.ruleGain = ruleGain; return nameStr; } /// /// 将字符串拆分为规则格式的list /// /// private static string SplitStringToRuleList() { List indexList = new List(); int index = 0; foreach (char c in configModel.NameFormat) { if (c.Equals('%')) indexList.Add(index); index++; } if (indexList.Count > 0) { List ruleList = new List(); for (int i = 0; i < indexList.Count; i++) { if (i == indexList.Count - 1) ruleList.Add(configModel.NameFormat.Substring(indexList[i])); else ruleList.Add(configModel.NameFormat.Substring(indexList[i], indexList[i + 1] - indexList[i])); } return JointToName(ruleList); } else return "pic" + GetContinueNum(); } /// /// 拼接出符合规则的 /// /// private static string JointToName(List ruleList) { if(ruleList.Count > 0) { //ConfigModel config = string nameStr = ""; foreach(string str in ruleList) { switch (str) { case "%P": if (!string.IsNullOrEmpty(configModel.NamePrefix)) nameStr += configModel.NamePrefix; break; case "%I": nameStr += GetContinueNum(); break; case "%h": nameStr += DateTime.Now.ToString("HH"); break; case "%m": nameStr += DateTime.Now.ToString("mm"); break; case "%s": nameStr += DateTime.Now.ToString("ss"); break; case "%Y": nameStr += DateTime.Now.ToString("yyyy"); break; case "%M": nameStr += DateTime.Now.ToString("MM"); break; case "%D": nameStr += DateTime.Now.ToString("dd"); break; case "%G": nameStr += Guid.NewGuid().ToString(); break; case "%U": nameStr += Environment.UserName; break; case "%N": nameStr += ruleName; break; case "%E": nameStr += ruleGain; break; case "%T1": nameStr += configModel.Txt1; break; case "%T2": nameStr += configModel.Txt2; break; case "%T3": nameStr += configModel.Txt3; break; case "%Z1": nameStr += configModel.CharZ1; break; case "%Z2": nameStr += configModel.CharZ2; break; } } return nameStr; } else return "pic" + GetContinueNum(); } /// /// 获取并格式化延续数值 /// /// private static string GetContinueNum() { string continueNum = configModel.ContinueNum.ToString(); if (configModel.NumberNum > continueNum.Length) return continueNum.PadLeft(configModel.NumberNum, '0'); else return continueNum; } } }