using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Mesnac.Equips { /// /// 设备工具类 /// public class EquipTools { #region 根据设备组范围获取设备组名称数组 /// /// 根据设备组范围获取设备组名称数组 /// /// 设备组范围值 /// 返回对应的设备组范围数组 public static string[] GetNameIndexFromRange(string ruleStr) { List lstNameIndex = new List(); if (CheckRuleColon(ruleStr)) { string[] values = ruleStr.Split(new char[] { ':' }); int maxLen = GetMaxStrLen(values); foreach (string value in values) { int intValue = 0; int.TryParse(value, out intValue); lstNameIndex.Add(FillZero(intValue.ToString(), maxLen)); } } else if (CheckRuleJoin(ruleStr)) { string[] values = ruleStr.Split(new string[] { ".." }, StringSplitOptions.RemoveEmptyEntries); //去掉空值 int begin = 0; int end = 0; int.TryParse(values[0], out begin); int.TryParse(values[1], out end); int maxLen = end.ToString().Length; for (int i = begin; i <= end; i++) { lstNameIndex.Add(FillZero(i.ToString(), maxLen)); } } return lstNameIndex.ToArray(); } #endregion #region 设备组范围字符串格式验证方法 /// /// 冒号分隔规则检测 /// /// 要检测的字符串 /// 符合规则返回true,否则返回false public static bool CheckRuleColon(string ruleStr) { bool result = true; string[] values = ruleStr.Split(new char[] { ':' }); if (values.Length > 0) { foreach (string value in values) { if (!String.IsNullOrEmpty(value)) { int intValue = 0; if (!int.TryParse(value, out intValue)) { result = false; break; } } } } else { result = false; } return result; } /// /// 连接符分隔规则检测 /// /// 要检测的字符串 /// 符合规则返回true,否则返回false public static bool CheckRuleJoin(string ruleStr) { bool result = true; string[] values = ruleStr.Split(new string[] { ".." }, StringSplitOptions.RemoveEmptyEntries); //去掉空值 if (values.Length == 2) { int intValue = 0; if (int.TryParse(values[0], out intValue)) { if (int.TryParse(values[1], out intValue)) { result = true; } else { result = false; } } else { result = false; } } else { result = false; } return result; } #endregion #region "按字符串位数补0" /// /// 按字符串位数补0 /// /// 字符串 /// 字符长度 /// public static string FillZero(string CharTxt, int CharLen) { if (CharTxt.Length < CharLen) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < CharLen - CharTxt.Length; i++) { sb.Append("0"); } sb.Append(CharTxt); return sb.ToString(); } else { return CharTxt; } } #endregion #region 获取字符串数组中最长字符串的长度 /// /// 获取字符串数组中最长字符串的长度 /// /// 字符串数组 /// 返回字符串数组中最长字符串的长度 public static int GetMaxStrLen(string[] strValues) { int maxLen = 0; if (strValues != null && strValues.Length > 0) { foreach (string value in strValues) { if (value.Length > maxLen) { maxLen = value.Length; } } } return maxLen; } #endregion } }