123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- using PaintDotNet.Base.SettingModel;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace PaintDotNet.Base.CommTool
- {
- /// <summary>
- /// 命名规则辅助工具类
- /// </summary>
- public static class NamingRuleHelper
- {
- private static ConfigModel configModel;
- private static string ruleName;
- private static string ruleGain;
- /// <summary>
- /// 按命名规则生成名字
- /// </summary>
- /// <param name="configModel"></param>
- /// <returns></returns>
- 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;
- }
- /// <summary>
- /// 将字符串拆分为规则格式的list
- /// </summary>
- /// <returns></returns>
- private static string SplitStringToRuleList()
- {
- List<int> indexList = new List<int>();
- int index = 0;
- foreach (char c in configModel.NameFormat)
- {
- if (c.Equals('%'))
- indexList.Add(index);
- index++;
- }
- if (indexList.Count > 0)
- {
- List<string> ruleList = new List<string>();
- 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();
- }
- /// <summary>
- /// 拼接出符合规则的
- /// </summary>
- /// <returns></returns>
- private static string JointToName(List<string> 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();
- }
- /// <summary>
- /// 获取并格式化延续数值
- /// </summary>
- /// <returns></returns>
- private static string GetContinueNum()
- {
- string continueNum = configModel.ContinueNum.ToString();
- if (configModel.NumberNum > continueNum.Length)
- return continueNum.PadLeft(configModel.NumberNum, '0');
- else
- return continueNum;
- }
- }
- }
|