ZhiYeJianKang_PeiXun/Song.ViewData/Helper/ConvertToAnyValue.cs

463 lines
15 KiB
C#
Raw Permalink Normal View History

2025-02-20 15:41:53 +08:00
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using System.Globalization;
using System.Web;
using System.Security.Cryptography;
namespace Song.ViewData
{
/// <summary>
/// <20><>ij<EFBFBD><C4B3>ֵת<D6B5><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
public class ConvertToAnyValue
{
private object _paravlue;
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭʼֵ
/// </summary>
public string ParaValue
{
get
{
return _paravlue.ToString();
}
set
{
_paravlue = value;
}
}
private string _parakey = "";
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
/// </summary>
public string ParaKey
{
get
{
return _parakey;
}
set
{
_parakey = value;
}
}
private string _unit = "";
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>λ
/// </summary>
public string Unit
{
get { return _unit; }
set { _unit = value; }
}
public ConvertToAnyValue()
{
}
public ConvertToAnyValue(object para)
{
this._paravlue = para;
}
public ConvertToAnyValue(string para)
{
this._paravlue = string.IsNullOrWhiteSpace(para) ? "" : para;
}
public ConvertToAnyValue(string para, string unit)
{
this._paravlue = para;
}
public static ConvertToAnyValue Get(string para)
{
return new ConvertToAnyValue(para);
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Int16<31><36><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><ECB3A3><EFBFBD>򷵻<EFBFBD>null;
/// </summary>
public int? Int16
{
get
{
if (_paravlue == null) return null;
try
{
return System.Convert.ToInt16(_paravlue);
}
catch
{
Regex r = new Regex("\\d+");
Match ms = r.Match(this.String);
if (ms.Success)
{
string tm = ms.Groups[0].Value;
return System.Convert.ToInt16(tm);
}
return null;
}
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Int32<33><32><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><ECB3A3><EFBFBD>򷵻<EFBFBD>null;
/// </summary>
public int? Int32
{
get
{
if (_paravlue == null) return null;
try
{
return System.Convert.ToInt32(_paravlue);
}
catch
{
Regex r = new Regex("\\d+");
Match ms = r.Match(this.String);
if (ms.Success)
{
string tm= ms.Groups[0].Value;
return System.Convert.ToInt32(tm);
}
return null;
}
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Int64<36><34><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><ECB3A3><EFBFBD>򷵻<EFBFBD>null;
/// </summary>
public long? Int64
{
get
{
if (_paravlue == null) return null;
try
{
return System.Convert.ToInt64(_paravlue);
}
catch
{
Regex r = new Regex("\\d+");
Match ms = r.Match(this.String);
if (ms.Success)
{
string tm = ms.Groups[0].Value;
return System.Convert.ToInt64(tm);
}
return null;
}
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Double<6C><65><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><ECB3A3><EFBFBD>򷵻<EFBFBD>null;
/// </summary>
public double? Double
{
get
{
if (_paravlue == null) return null;
try
{
return System.Convert.ToDouble(_paravlue);
}
catch
{
return null;
}
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>String<6E><67><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><ECB3A3><EFBFBD>򷵻ؿ<F2B7B5BB><D8BF>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Null;
/// </summary>
public string String
{
get
{
return _paravlue == null ? "" : _paravlue.ToString().Trim();
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>Զ<EFBFBD>ȥ<EFBFBD><C8A5>html<6D><6C>ǩ
/// </summary>
public string Text
{
get
{
string text = this.String;
if (string.IsNullOrWhiteSpace(text)) return text;
string strText = System.Text.RegularExpressions.Regex.Replace(text, "<[^>]+>", "");
strText = System.Text.RegularExpressions.Regex.Replace(strText, "&[^;]+;", "");
return text;
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ,<2C><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>Null
/// </summary>
public string Value
{
get
{
string text = this.String;
if (string.IsNullOrWhiteSpace(text)) return null;
return text;
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Boolean<61><6E><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><ECB3A3><EFBFBD>򷵻<EFBFBD>true;
/// </summary>
public bool? Boolean
{
get
{
if (_paravlue == null) return null;
try
{
return System.Convert.ToBoolean(_paravlue);
}
catch
{
return null;
}
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DateTime<6D><65><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><ECB3A3><EFBFBD>򷵻<EFBFBD>null;
/// </summary>
public DateTime? DateTime
{
get
{
if (_paravlue == null) return null;
try
{
if (_paravlue is long)
{
long jsTimeStamp = 0;
long.TryParse(_paravlue.ToString(), out jsTimeStamp);
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
DateTime dt = startTime.AddMilliseconds(jsTimeStamp);
return dt;
}
else
{
return System.Convert.ToDateTime(_paravlue);
}
}
catch
{
string t = _paravlue.ToString();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-
foreach (char c in t)
t += c >= 48 && c <= 57 ? c : '-';
string str = t;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>-<2D><><EFBFBD>ߣ<EFBFBD><DFA3>򻻳<EFBFBD>һ<EFBFBD><D2BB>
Regex re = new Regex(@"\-{1,}", RegexOptions.IgnorePatternWhitespace);
str = re.Replace(str, "-");
//<2F><><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5>
re = new Regex(@"^\-{1,}(\w)", RegexOptions.IgnorePatternWhitespace);
str = re.Replace(str, "$1");
re = new Regex(@"(\w)\-{1,}$", RegexOptions.IgnorePatternWhitespace);
str = re.Replace(str, "$1");
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ȡǰ<C8A1><C7B0>λ
string year;
if (str.IndexOf('-') > -1)
{
year = str.Substring(0, str.IndexOf('-'));
year = year.Length == 1 ? "0" + year : year;
year = year.Length == 2 ? "19" + year : year;
year = year.Length > 4 ? year.Substring(0, 4) :
year; str = year + "-" + str.Substring(str.IndexOf('-') + 1);
}
else
{
str += "-1-1";
}
try
{
return System.Convert.ToDateTime(str);
}
catch
{
return null;
}
}
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MD5<44><35><EFBFBD><EFBFBD>ֵ(Сд)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><ECB3A3><EFBFBD>򷵻<EFBFBD>null;
/// </summary>
public string MD5
{
get
{
if (_paravlue == null) return "";
if (string.IsNullOrWhiteSpace(_paravlue.ToString())) return "";
System.Security.Cryptography.MD5CryptoServiceProvider md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] byteArray = Encoding.ASCII.GetBytes(_paravlue.ToString());
byteArray = md5.ComputeHash(byteArray);
string hashedValue = "";
foreach (byte b in byteArray)
{
hashedValue += b.ToString("x2");
}
return hashedValue;
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SHA1<41><31><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><ECB3A3><EFBFBD>򷵻<EFBFBD>null;
/// </summary>
public string SHA1
{
get
{
if (_paravlue == null) return null;
System.Security.Cryptography.SHA1 sha1 = new SHA1CryptoServiceProvider();//<2F><><EFBFBD><EFBFBD>SHA1<41><31><EFBFBD><EFBFBD>
byte[] bytes_in = System.Text.Encoding.UTF8.GetBytes(_paravlue.ToString());//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>תΪbyte<74><65><EFBFBD><EFBFBD>
byte[] bytes_out = sha1.ComputeHash(bytes_in);//Hash<73><68><EFBFBD><EFBFBD>
sha1.Dispose();//<2F>ͷŵ<CDB7>ǰʵ<C7B0><CAB5>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
string result = BitConverter.ToString(bytes_out);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>תΪstring<6E><67><EFBFBD><EFBFBD>
return result.Replace("-","");
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> URL <20><><EFBFBD><EFBFBD><EBB2A2><EFBFBD><EFBFBD><EFBFBD>ѽ<EFBFBD><D1BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><ECB3A3><EFBFBD>򷵻<EFBFBD>null;
/// </summary>
public string UrlDecode
{
get
{
if (_paravlue == null) return null;
return System.Web.HttpUtility.UrlDecode(_paravlue.ToString().Trim());
}
}
public string UrlEncode
{
get
{
if (_paravlue == null) return null;
return System.Web.HttpUtility.UrlEncode(_paravlue.ToString().Trim());
}
}
/// <summary>
/// <20>Ծ<EFBFBD><D4BE><EFBFBD>HTML <20><><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD><EBA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѽ<EFBFBD><D1BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><ECB3A3><EFBFBD>򷵻<EFBFBD>null;
/// </summary>
public string HtmlDecode
{
get
{
if (_paravlue == null) return null;
System.Web.HttpContext _context = System.Web.HttpContext.Current;
return _context.Server.HtmlDecode(_paravlue.ToString());
}
}
/// <summary>
/// ת<><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
/// </summary>
public string MapPath
{
get
{
System.Web.HttpContext _context = System.Web.HttpContext.Current;
return _context.Server.MapPath(_paravlue.ToString());
}
}
/// <summary>
/// ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
/// </summary>
public string VirtualPath
{
get
{
string path = _paravlue.ToString();
path = path.Replace("\\", "/");
path = path.Replace("~/", System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath);
//<2F><>·<EFBFBD><C2B7>ĩβ<C4A9><CEB2><EFBFBD><EFBFBD>\\
if (path.IndexOf("/") > -1)
{
if (path.Substring(path.LastIndexOf("/")).IndexOf(".") < 0)
if (path.Substring(path.Length - 1) != "/") path += "/";
}
path = Regex.Replace(path, @"\/+", "/");
return path;
}
}
/// <summary>
/// <20><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="split"><3E><><EFBFBD>ڷֲ<DAB7><D6B2><EFBFBD><EFBFBD>ַ<EFBFBD></param>
/// <returns></returns>
public string[] Split(char split)
{
return _paravlue.ToString().Split(split);
}
/// <summary>
/// <20><>C#ʱ<><CAB1>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>Javascript<70><74>ʱ<EFBFBD><CAB1>
/// </summary>
[Obsolete]
public string JavascriptTime
{
get
{
if (_paravlue == null) return "";
try
{
System.DateTime time = this.DateTime ?? TimeZone.CurrentTimeZone.ToLocalTime(System.DateTime.Now);
string fmtDate = "ddd MMM d HH:mm:ss 'UTC'zz'00' yyyy";
CultureInfo ciDate = CultureInfo.CreateSpecificCulture("en-US");
//<2F><>C#ʱ<><CAB1>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>JSʱ<53><CAB1><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
string JSstring = time.ToString(fmtDate, ciDate);
return JSstring;
}
catch
{
return "";
}
}
}
/// <summary>
/// JavaScriptʱ<74><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>1970<37><30>01<30><31>01<30><31>00ʱ00<30><30>00<30><30>(<28><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>1970<37><30>01<30><31>01<30><31>08ʱ00<30><30>00<30><30>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5>ܺ<EFBFBD><DCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
public long TimeStamp
{
get
{
System.DateTime time = this.DateTime ?? System.DateTime.Now;
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
long timeStamp = (long)(time - startTime).TotalMilliseconds; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return timeStamp;
}
}
/// <summary>
/// תΪָ<CEAA><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
public object ChangeType(System.Type type)
{
object obj=null;
switch (type.FullName)
{
case "System.DateTime":
obj = this.DateTime;
break;
default:
obj = Convert.ChangeType(_paravlue, type);
break;
}
return obj;
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><><C4AC><EFBFBD><EFBFBD>ԿΪ<D4BF><CEAA>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
/// </summary>
/// <returns></returns>
public ConvertToAnyValue Decrypt()
{
string ret = string.Empty;
ret = WeiSha.Common.DataConvert.DecryptForBase64(this.UrlDecode);
return new ConvertToAnyValue(ret);
}
}
}