using System;
using System.Windows.Forms;
using System.Text;
using System.Security.Cryptography;
using System.Text.RegularExpressions;
using System.Collections;
using System.IO;
namespace Hxh.API
{
/// <summary>
/// Function 的摘要说明。
/// </summary>
public class Function
{
public Function()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
/// <summary>
/// 判断树结点所处级数
/// </summary>
/// <param name="tn"></param>
/// <returns></returns>
public static int LevelOfNode(TreeNode tn)
{
int x=0;
if(tn.Parent!=null)
return LevelOfNode(tn.Parent)+1;
else
return x;
}
/// <summary>
/// 判断一个字符串是否全部为数字
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static bool IsNumber(string str)
{
bool IsNumb=true;
foreach(char ch in str.ToCharArray())
{
if((ch>='0' && ch<='9')||ch=='.')
{
}
else
{
IsNumb=false;
}
}
return IsNumb;
}
/// <summary>
/// 移去非数字字符
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string MoveNotNumberChar(string str)
{
for(int i=0;i<str.Length;i++)
{
if(str[i]<'0'||str[i]>'9')
{
str=str.Remove(i,1);
}
}
return str;
}
/// <summary>
/// 只接受数字录入
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public static void OnlyEntryNumber(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if((e.KeyChar>='0'&&e.KeyChar<='9')||e.KeyChar=='.'||e.KeyChar==(char)127||e.KeyChar==(char)8)
{
e.Handled=false;
}
else
{
e.Handled=true;
}
}
/// <summary>
/// 最后一个字符位置
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static int LastCharIndexOf(string str)
{
int I=-1;
for(int i=str.Length-1;i>=0;i--)
{
if(str[i]<'0' || str[i]>'9')
{
I=i;
break;
}
}
return I;
}
/// <summary>
/// 字符转换为数值
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static decimal StrToInt(string str)
{
if(str!=string.Empty)
{
try
{
return Convert.ToDecimal(str);
}
catch
{
return 0;
}
}
else
{
return 0;
}
}
/// <summary>
/// 括号是否匹配
/// </summary>
/// <param name="al"></param>
/// <returns></returns>
public static bool BracketsIsPetch(ArrayList al)
{
int countor=0;
for(int i =0;i<al.Count;i++)
{
if(al[i].ToString()=="(")
countor++;
else if(al[i].ToString()==")")
countor--;
}
if(countor >0)
return true;
else
return false;
}
/// <summary>
/// 判断一个路径是否合法
/// </summary>
/// <param name="strPath"></param>
/// <returns></returns>
public static bool PathIsValidate(string strPath)
{
strPath=strPath.ToUpper();
if(strPath.Length<3)
return false;
if(strPath[0]<'C' || strPath[0]>'H' )
return false;
if(strPath[1]!=':')
return false;
if(strPath[2]!='//')
return false;
char[] IllegalChars={'/','*','?','<','>','"','|'};
if(strPath.IndexOfAny(IllegalChars,3)>-1)
return false;
return true;
}
/// <summary>
/// 验证E_mail格式是否正确
/// </summary>
/// <param name="E_mail">E_mail地址</param>
/// <returns>如果格式正确,则返回 true,如果不正确则返 false</returns>
public static bool IsValidEmail(string E_mail)
{
E_mail=E_mail.Trim();
return Regex.IsMatch(E_mail, @"^([/w-/.]+)@((/[[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}/.)|(([/w-]+/.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(/]?)$");
}
//验证是否为电话号码
/// <summary>
/// 验证电话号码格式是否正确
/// </summary>
/// <param name="Phone">电话号码</param>
/// <returns>如果格式正确,则返回 true,否则返回 false</returns>
public static bool IsValidPhone(string Phone)
{
Phone=Phone.Trim();
return Regex.IsMatch(Phone,@"(/d+-)?(/d{4}-?/d{7}|/d{3}-?/d{8}|^/d{7,8})(-/d+)?");
}
/// <summary>
/// 验证身份证号码格式是否正确
/// </summary>
/// <param name="UID">身份证号码</param>
/// <returns>如果格式正确,则返回 true,否则返回 false</returns>
public static bool IsValidUID(string UID)
{
UID=UID.Trim();
return Regex.IsMatch(UID,"//d{18}");
}
/// <summary>
/// 验证邮政编码格式是否正确
/// </summary>
/// <param name="UID">邮政编码</param>
/// <returns>如果格式正确,则返回 true,否则返回 false</returns>
public static bool IsValidPostalCode(string PostalCode)
{
PostalCode=PostalCode.Trim();
return Regex.IsMatch(PostalCode,"[1-9]//d{5}(?!//d)");
}
/// <summary>
/// 验证URL格式是否正确
/// </summary>
/// <param name="UID">RUL</param>
/// <returns>如果格式正确,则返回 true,否则返回 false</returns>
public static bool IsValidURL(string URL)
{
URL=URL.Trim();
return Regex.IsMatch(URL,"http://([//w-]+//.)+[//w-]+(/[//w- ./?%&=]*)?");
}
// /// <summary>
// /// 生成纯数字的ID
// /// </summary>
// /// <param name="width"></param>
// /// <returns></returns>
// public static string GenUnidueID(int width)
// {
// UniqueID unq=new UniqueID();
// return unq.GenUniqueID(width,"NUM");
// }
/// <summary>
/// 判断合成后的评价结果是否及格
/// </summary>
/// <param name="strSample"></param>
/// <param name="strStandard"></param>
/// <returns></returns>
public static bool CompareLevelResult(string strSample,string strStandard)
{
char[] levels={'A','B','C','D'};
bool ret=true;
int mult1,mult2;
foreach(char lvl in levels)
{
mult1=mult2=1;
if(strSample.IndexOf(lvl)>=0 && strStandard.IndexOf(lvl)<0)
{
ret=true;
break;
}
else if(strSample.IndexOf(lvl)<0 && strStandard.IndexOf(lvl)>=0)
{
ret=false;
break;
}
else if(strSample.IndexOf(lvl)>=0 && strStandard.IndexOf(lvl)>=0)
{
if(strSample.IndexOf(lvl)>0)
{
if(IsNumber(strSample.Substring(strSample.IndexOf(lvl)-1,1)))
{
mult1=Convert.ToInt32(strSample.Substring(strSample.IndexOf(lvl)-1,1));
}
}
if(strStandard.IndexOf(lvl)>0)
{
if(IsNumber(strStandard.Substring(strStandard.IndexOf(lvl)-1,1)))
{
mult2=Convert.ToInt32(strStandard.Substring(strStandard.IndexOf(lvl)-1,1));
}
}
if(mult1>mult2)
{
ret=true;
break;
}
else if(mult1<mult2)
{
ret=false;
break;
}
}
}
return ret;
}
/// <summary>
/// 返回原始等级未达标的维度个数
/// </summary>
/// <param name="strSample"></param>
/// <param name="strStandard"></param>
/// <returns></returns>
public static int ComparePrimitLevelResult(string strSample,string strStandard)
{
int t=0;
if(strSample.Length!=strStandard.Length)
{
return -1;
}
for(int i=0;i<strStandard.Length;i++)
{
if(strSample[i]>strStandard[i])
{
t++;
}
}
return t;
}
/// <summary>
/// 比较字符串大小,1大,-1小,0相等
/// </summary>
/// <param name="strTarget"></param>
/// <param name="strOrigin"></param>
/// <returns></returns>
public static int CompareString(string strTarget,string strOrigin)
{
int rst=0;
for(int i=0;i<strTarget.Length;i++)
{
if(strOrigin[i]>strTarget[i])
{
rst = 1;
break;
}
else if(strOrigin[i]>strTarget[i])
{
rst = -1;
break;
}
}
return rst;
}
/// <summary>
/// 定长字符串序号加1
/// </summary>
/// <param name="str"></param>
/// <param name="width"></param>
/// <returns></returns>
public static string AddOne(string str,int width)
{
str=str.Trim();
int tmp=int.Parse(str.Substring(str.Length-width))+1;
return str.Substring(0,str.Length-width)+tmp.ToString().PadLeft(width,'0');
}
/// <summary>
/// MD5加密
/// </summary>
/// <param name="strOriginal"></param>
/// <returns></returns>
public static string Encoding(string strOriginal)
{
Byte[] pwdBytes=new System.Text.UnicodeEncoding().GetBytes(strOriginal);
Byte[] hashBytes=((HashAlgorithm)System.Security.Cryptography.CryptoConfig.CreateFromName("MD5")).ComputeHash(pwdBytes);
return BitConverter.ToString(hashBytes);
}
/// <summary>
/// MD5解密
/// </summary>
/// <param name="strCryptography"></param>
/// <returns></returns>
public static string Decoding(string strCryptography)
{
Byte[] pwdBytes=new System.Text.UnicodeEncoding().GetBytes(strCryptography);
Byte[] hashBytes=((HashAlgorithm)System.Security.Cryptography.CryptoConfig.CreateFromName("MD5")).ComputeHash(pwdBytes);
return BitConverter.ToString(hashBytes);
}
const string KEY_64 = "VavicApp";
const string IV_64 = "VavicApp"; //注意了,是8个字符,64位
/// <summary>
/// 文本加密
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public static string TextEncode(string data)
{
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
int i = cryptoProvider.KeySize;
MemoryStream ms = new MemoryStream();
CryptoStream cst = new CryptoStream(ms,cryptoProvider.CreateEncryptor(byKey,byIV),CryptoStreamMode.Write);
StreamWriter sw = new StreamWriter(cst);
sw.Write(data);
sw.Flush();
cst.FlushFinalBlock();
sw.Flush();
return Convert.ToBase64String(ms.GetBuffer(),0,(int)ms.Length);
}
/// <summary>
/// 文本解密
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public static string TextDecode(string data)
{
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
byte[] byEnc;
try
{
byEnc = Convert.FromBase64String(data);
}
catch
{
return null;
}
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
MemoryStream ms = new MemoryStream(byEnc);
CryptoStream cst = new CryptoStream(ms,cryptoProvider.CreateDecryptor(byKey,byIV),CryptoStreamMode.Read);
StreamReader sr = new StreamReader(cst);
return sr.ReadToEnd();
}
}
}