ValueConvert

 

/// <summary>
/// 类型转换
/// </summary>
public static partial class ValueConvert
{
/// <summary>
/// 将最后一个字符串的路径path替换
/// </summary>
/// <param name="str"></param>
/// <param name="path"></param>
/// <returns></returns>
public static string Path(this string str, string path)
{
int index = str.LastIndexOf('\\');
int indexDian = str.LastIndexOf('.');
return str.Substring(0, index + 1) + path + str.Substring(indexDian);
}
public static List<string> ToList(this string ids)
{
List<string> listId = new List<string>();
if (!string.IsNullOrEmpty(ids))
{
var sort = new SortedSet<string>(ids.Split(','));
foreach (var item in sort)
{
listId.Add(item);

}
}
return listId;
}
/// <summary>
/// 从^分割的字符串中获取多个Id,先是用 ^ 分割,再使用 & 分割
/// </summary>
/// <param name="ids">先是用 ^ 分割,再使用 & 分割</param>
/// <returns></returns>
public static List<string> GetIdSort(this string ids)
{
List<string> listId = new List<string>();
if (!string.IsNullOrEmpty(ids))
{
var sort = new SortedSet<string>(ids.Split('^')
.Where(w => !string.IsNullOrWhiteSpace(w) && w.Contains('&'))
.Select(s => s.Substring(0, s.IndexOf('&'))));
foreach (var item in sort)
{
listId.Add(item);
}
}
return listId;
}
/// <summary>
/// 从,分割的字符串中获取单个Id
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
public static string GetId(this string ids)
{
if (!string.IsNullOrEmpty(ids))
{
var sort = new SortedSet<string>(ids.Split('^')
.Where(w => !string.IsNullOrWhiteSpace(w) && w.Contains('&'))
.Select(s => s.Substring(0, s.IndexOf('&'))));
foreach (var item in sort)
{
if (!string.IsNullOrWhiteSpace(item))
{
return item;
}
}
}
return null;
}
/// <summary>
/// 将String转换为Dictionary类型,过滤掉为空的值,首先 6 分割,再 7 分割
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static Dictionary<string, string> StringToDictionary(string value)
{
Dictionary<string, string> queryDictionary = new Dictionary<string, string>();
string[] s = value.Split('^');
for (int i = 0; i < s.Length; i++)
{
if (!string.IsNullOrWhiteSpace(s[i]) && !s[i].Contains("undefined") && !s[i].Contains("请选择"))
{
var ss = s[i].Split('&');
if ((!string.IsNullOrEmpty(ss[0])) && (!string.IsNullOrEmpty(ss[1])))
{
queryDictionary.Add(ss[0], ss[1]);
}
}

}
return queryDictionary;
}
public static byte GetByte(this object value)
{
try
{
return byte.Parse(value.ToString());
}
catch
{

return 0;
}
}
/// <summary>
/// 得到对象的 Int 类型的值,默认值0
/// </summary>
/// <param name="Value">要转换的值</param>
/// <returns>如果对象的值可正确返回, 返回对象转换的值 ,否则, 返回默认值0</returns>
public static int GetInt(this object Value)
{
return GetInt(Value, 0);
}
/// <summary>
/// 得到对象的 Int 类型的值,默认值0
/// </summary>
/// <param name="Value">要转换的值</param>
/// <param name="defaultValue">如果转换失败,返回的默认值</param>
/// <returns>如果对象的值可正确返回, 返回对象转换的值 ,否则, 返回默认值0</returns>
public static int GetInt(this object Value, int defaultValue)
{

if (Value == null) return defaultValue;
if (Value is string && Value.GetString().HasValue() == false) return defaultValue;

if (Value is DBNull) return defaultValue;

if ((Value is string) == false && (Value is IConvertible) == true)
{
return (Value as IConvertible).ToInt32(CultureInfo.CurrentCulture);
}

int retVal = defaultValue;
if (int.TryParse(Value.ToString(), NumberStyles.Any, CultureInfo.CurrentCulture, out retVal))
{
return retVal;
}
else
{
return defaultValue;
}
}

/// <summary>
/// 得到对象的 decimal 类型的值,默认值0
/// </summary>
/// <param name="Value">要转换的值</param>
/// <returns>如果对象的值可正确返回, 返回对象转换的值 ,否则, 返回默认值0</returns>
public static decimal GetDecimal(this object Value)
{
decimal d = 0;
return GetDecimal(Value, d);
}
/// <summary>
/// 得到对象的 decimal 类型的值,默认值0
/// </summary>
/// <param name="Value">要转换的值</param>
/// <param name="defaultValue">如果转换失败,返回的默认值</param>
/// <returns>如果对象的值可正确返回, 返回对象转换的值 ,否则, 返回默认值0</returns>
public static decimal GetDecimal(this object Value, decimal defaultValue)
{

if (Value == null) return defaultValue;
if (Value is string && Value.GetString().HasValue() == false) return defaultValue;

if (Value is DBNull) return defaultValue;

if ((Value is string) == false && (Value is IConvertible) == true)
{
return (Value as IConvertible).ToInt32(CultureInfo.CurrentCulture);
}

decimal retVal = defaultValue;
if (decimal.TryParse(Value.ToString(), NumberStyles.Any, CultureInfo.CurrentCulture, out retVal))
{
return retVal;
}
else
{
return defaultValue;
}
}
/// <summary>
/// 得到对象的 decimal 类型的值,默认值0
/// </summary>
/// <param name="Value">要转换的值</param>
/// <returns>如果对象的值可正确返回, 返回对象转换的值 ,否则, 返回默认值0</returns>
public static double GetDouble(this object Value)
{
double d = 0;
return GetDouble(Value, d);
}
/// <summary>
/// 得到对象的 decimal 类型的值,默认值0
/// </summary>
/// <param name="Value">要转换的值</param>
/// <param name="defaultValue">如果转换失败,返回的默认值</param>
/// <returns>如果对象的值可正确返回, 返回对象转换的值 ,否则, 返回默认值0</returns>
public static double GetDouble(this object Value, double defaultValue)
{

if (Value == null) return defaultValue;
if (Value is string && Value.GetString().HasValue() == false) return defaultValue;

if (Value is DBNull) return defaultValue;

if ((Value is string) == false && (Value is IConvertible) == true)
{
return (Value as IConvertible).ToDouble(CultureInfo.CurrentCulture);
}

double retVal = defaultValue;
if (double.TryParse(Value.ToString(), NumberStyles.Any, CultureInfo.CurrentCulture, out retVal))
{
return retVal;
}
else
{
return defaultValue;
}
}

/// <summary>
/// 得到对象的 String 类型的值,默认值string.Empty
/// </summary>
/// <param name="Value">要转换的值</param>
/// <returns>如果对象的值可正确返回, 返回对象转换的值 ,否则, 返回默认值string.Empty</returns>
public static string GetString(this object Value)
{
return GetString(Value, string.Empty);
}
/// <summary>
/// 得到对象的 String 类型的值,默认值string.Empty
/// </summary>
/// <param name="Value">要转换的值</param>
/// <param name="defaultValue">如果转换失败,返回的默认值</param>
/// <returns>如果对象的值可正确返回, 返回对象转换的值 ,否则, 返回默认值 。</returns>
public static string GetString(this object Value, string defaultValue)
{
if (Value == null) return defaultValue;
string retVal = defaultValue;
try
{
var strValue = Value as string;
if (strValue != null)
{
return strValue;
}

char[] chrs = Value as char[];
if (chrs != null)
{
return new string(chrs);
}

retVal = Value.ToString();
}
catch
{
return defaultValue;
}
return retVal;
}
/// <summary>
/// 得到对象的 DateTime 类型的值,默认值为DateTime.MinValue
/// </summary>
/// <param name="Value">要转换的值</param>
/// <returns>如果对象的值可正确返回, 返回对象转换的值 ,否则, 返回的默认值为DateTime.MinValue </returns>
public static DateTime GetDateTime(this object Value)
{
return GetDateTime(Value, DateTime.MinValue);
}

/// <summary>
/// 得到对象的 DateTime 类型的值,默认值为DateTime.MinValue
/// </summary>
/// <param name="Value">要转换的值</param>
/// <param name="defaultValue">如果转换失败,返回默认值为DateTime.MinValue</param>
/// <returns>如果对象的值可正确返回, 返回对象转换的值 ,否则, 返回的默认值为DateTime.MinValue</returns>
public static DateTime GetDateTime(this object Value, DateTime defaultValue)
{
if (Value == null) return defaultValue;

if (Value is DBNull) return defaultValue;

string strValue = Value as string;
if (strValue == null && (Value is IConvertible))
{
return (Value as IConvertible).ToDateTime(CultureInfo.CurrentCulture);
}
if (strValue != null)
{
strValue = strValue
.Replace("", "-")
.Replace("", "-")
.Replace("", "-")
.Replace("", ":")
.Replace("", ":")
.Replace("", ":")
.Replace("", ":")
;
}
DateTime dt = defaultValue;
if (DateTime.TryParse(Value.GetString(), out dt))
{
return dt;
}

return defaultValue;
}
/// <summary>
/// 得到对象的布尔类型的值,默认值false
/// </summary>
/// <param name="Value">要转换的值</param>
/// <returns>如果对象的值可正确返回, 返回对象转换的值 ,否则, 返回默认值false</returns>
public static bool GetBool(this object Value)
{
return GetBool(Value, false);
}

/// <summary>
/// 得到对象的 Bool 类型的值,默认值false
/// </summary>
/// <param name="Value">要转换的值</param>
/// <param name="defaultValue">如果转换失败,返回的默认值</param>
/// <returns>如果对象的值可正确返回, 返回对象转换的值 ,否则, 返回默认值false</returns>
public static bool GetBool(this object Value, bool defaultValue)
{
if (Value == null) return defaultValue;
if (Value is string && Value.GetString().HasValue() == false) return defaultValue;

if ((Value is string) == false && (Value is IConvertible) == true)
{
if (Value is DBNull) return defaultValue;

try
{
return (Value as IConvertible).ToBoolean(CultureInfo.CurrentCulture);
}
catch { }
}

if (Value is string)
{
if (Value.GetString() == "0") return false;
if (Value.GetString() == "1") return true;
if (Value.GetString().ToLower() == "yes") return true;
if (Value.GetString().ToLower() == "no") return false;
}
/// if (Value.GetInt(0) != 0) return true;
bool retVal = defaultValue;
if (bool.TryParse(Value.GetString(), out retVal))
{
return retVal;
}
else return defaultValue;
}

public static string ObjToFormatTime(this object obj)
{
return ObjToFormatTime(obj, "yyyy-MM-dd");
}
/// <summary>
/// 对时间格式的字符串进行格式华
/// </summary>
/// <param name="obj"></param>
/// <param name="Format">
/// 格式 
/// yyyy 年
/// MM 月
/// dd 天
/// HH 24制的时间
/// hh 12制的时间
/// mm 分
/// ss 秒
/// fff 毫秒
/// 
/// </param>
/// <returns></returns>
public static string ObjToFormatTime(this object obj, string format)
{
string retVal = "";
if (obj != null && obj.GetString() != "")
{
DateTime dtime = GetDateTime(obj);
retVal = dtime.ToString(format);
}

return retVal;
}

public static string GetDateTimeString(this object obj)
{
string retVal = "";
DateTime dTime = obj.GetDateTime(DateTime.Now);
DateTime ntime = DateTime.Now;
TimeSpan tspan = ntime - dTime;
if (tspan.Days > 360)
{
return dTime.ToString("yy年MM月");
}
if (tspan.Days > 30)
{
return dTime.ToString("MM月dd日");
}

if (tspan.Days > 1)
{
return dTime.ToString("MM月dd日");
}
if (tspan.Days == 0 && tspan.Hours > 0)
{
return dTime.ToString("HH时mm分");
}
if (tspan.Days == 0 && tspan.Hours == 0 && tspan.Hours == 0 && tspan.Minutes > 0)
{
return dTime.ToString("mm分ss秒");
}
if (tspan.Days == 0 && tspan.Hours == 0 && tspan.Hours == 0 && tspan.Minutes == 0 && tspan.Seconds < 2)
{
return "";
}
return retVal;
}

public static string GetDateTimeString(this object Value, string format)
{
string retVal = "";
if (Value == null) return retVal;

if (Value is DBNull) return retVal;

string strValue = Value as string;
DateTime dTime = Value.GetDateTime();
retVal = dTime.ToString(format);
return retVal;
}

/// <summary>
/// 检测 GuidValue 是否包含有效的值,默认值Guid.Empty
/// </summary>
/// <param name="GuidValue">要转换的值</param>
/// <returns>如果对象的值可正确返回, 返回对象转换的值 ,否则, 返回默认值Guid.Empty</returns>
public static Guid GetGuid(string GuidValue)
{
try
{
return new Guid(GuidValue);
}
catch { return Guid.Empty; }
}

public static string GetStuAudit(this object Value)
{
return GetStuAudit(Value, string.Empty);
}public static string SubStartString(this object Value, int len, string endStr = "")
{
string retVal = "";
if (Value == null) return retVal;

if (Value is DBNull) return retVal;

retVal = Value as string;
retVal = retVal.Trim(' ');
if (retVal.Length > len)
{
retVal = retVal.Substring(0, len);
retVal += endStr;
}
return retVal;
}

/// <summary>
/// 检测 Value 是否包含有效的值,默认值false
/// </summary>
/// <param name="Value"> 传入的值</param>
/// <returns> 包含,返回true,不包含,返回默认值false</returns>
public static bool HasValue(this string Value)
{
if (Value != null)
{
return !string.IsNullOrEmpty(Value.ToString());
}
else return false;
}

/// <summary>
/// 获取本周 周一的时间
/// </summary>
/// <param name="Value"></param>
/// <returns></returns>
public static DateTime GetSundayDateTime(this DateTime Value)
{
DayOfWeek dw = Value.DayOfWeek;
DateTime retValue = Value;
switch (dw)
{
case DayOfWeek.Sunday:
retValue = Value;
break;
case DayOfWeek.Monday:
retValue = Value.AddDays(-1);
break;
case DayOfWeek.Tuesday:
retValue = Value.AddDays(-2);
break;
case DayOfWeek.Wednesday:
retValue = Value.AddDays(-3);
break;
case DayOfWeek.Thursday:
retValue = Value.AddDays(-4);
break;
case DayOfWeek.Friday:
retValue = Value.AddDays(-5);
break;
case DayOfWeek.Saturday:
retValue = Value.AddDays(-6);
break;
}
return retValue;
}
}

 

posted on 2019-09-02 22:52  欢笑一声  阅读(130)  评论(0)    收藏  举报

导航