|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
|
using System.Text;
|
|
|
|
|
|
namespace Mesnac.Equips
|
|
|
{
|
|
|
/// <summary>
|
|
|
/// 设备工具类
|
|
|
/// </summary>
|
|
|
public class EquipTools
|
|
|
{
|
|
|
#region 根据设备组范围获取设备组名称数组
|
|
|
/// <summary>
|
|
|
/// 根据设备组范围获取设备组名称数组
|
|
|
/// </summary>
|
|
|
/// <param name="ruleStr">设备组范围值</param>
|
|
|
/// <returns>返回对应的设备组范围数组</returns>
|
|
|
public static string[] GetNameIndexFromRange(string ruleStr)
|
|
|
{
|
|
|
List<string> lstNameIndex = new List<string>();
|
|
|
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<string>();
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region 设备组范围字符串格式验证方法
|
|
|
|
|
|
/// <summary>
|
|
|
/// 冒号分隔规则检测
|
|
|
/// </summary>
|
|
|
/// <param name="ruleStr">要检测的字符串</param>
|
|
|
/// <returns>符合规则返回true,否则返回false</returns>
|
|
|
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;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 连接符分隔规则检测
|
|
|
/// </summary>
|
|
|
/// <param name="ruleStr">要检测的字符串</param>
|
|
|
/// <returns>符合规则返回true,否则返回false</returns>
|
|
|
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"
|
|
|
/// <summary>
|
|
|
/// 按字符串位数补0
|
|
|
/// </summary>
|
|
|
/// <param name="CharTxt">字符串</param>
|
|
|
/// <param name="CharLen">字符长度</param>
|
|
|
/// <returns></returns>
|
|
|
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 获取字符串数组中最长字符串的长度
|
|
|
/// <summary>
|
|
|
/// 获取字符串数组中最长字符串的长度
|
|
|
/// </summary>
|
|
|
/// <param name="strValues">字符串数组</param>
|
|
|
/// <returns>返回字符串数组中最长字符串的长度</returns>
|
|
|
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
|
|
|
}
|
|
|
}
|