背景

  1. 在开发中,我们会碰到诸如String类型转换为Int等等问题,虽然处理起来简单,但是本着DRY(Don't Repeat Yourself )原则,还是有必要封装处理下;
  2. 具体代码:MasterChief
  3. Nuget:Install-Package MasterChief.DotNet4.Utilities
  4. 欢迎Star,欢迎Issues;

实现代码

using System;
using System.ComponentModel;
using System.Data;
using System.Globalization;namespace MasterChief.DotNet4.Utilities.Common
{/// <summary>///     转换帮助类/// </summary>public static class ConvertHelper{#region Methods/// <summary>///     转换成布尔类型/// </summary>/// <param name="data">需要转换的object</param>/// <param name="defalut">默认数值</param>/// <returns>转换返回</returns>public static bool ToBooleanOrDefault(this object data, bool defalut = false){return data != null && bool.TryParse(data.ToString(), out var result) ? result : defalut;}/// <summary>///     转换成Byte类型/// </summary>/// <param name="data">需要转换的object</param>/// <param name="defalut">默认数值</param>/// <returns>转换返回</returns>public static byte ToByteOrDefault(this object data, byte defalut = 0x00){return data != null && byte.TryParse(data.ToString(), out var result) ? result : defalut;}/// <summary>///     转换为农历年/// </summary>/// <param name="date">日期</param>/// <returns>农历年</returns>public static string ToChineseDate(this DateTime date){var cnDate = new ChineseLunisolarCalendar();string[] months = { string.Empty, "正月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "冬月", "腊月" };string[] days ={string.Empty, "初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十", "十一", "十二", "十三", "十四", "十五","十六", "十七", "十八", "十九", "廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十"};string[] years ={string.Empty, "甲子", "乙丑", "丙寅", "丁卯", "戊辰", "己巳", "庚午", "辛未", "壬申", "癸酉", "甲戌", "乙亥", "丙子", "丁丑", "戊寅","己卯", "庚辰", "辛己", "壬午", "癸未", "甲申", "乙酉", "丙戌", "丁亥", "戊子", "己丑", "庚寅", "辛卯", "壬辰", "癸巳", "甲午", "乙未","丙申", "丁酉", "戊戌", "己亥", "庚子", "辛丑", "壬寅", "癸丑", "甲辰", "乙巳", "丙午", "丁未", "戊申", "己酉", "庚戌", "辛亥", "壬子","癸丑", "甲寅", "乙卯", "丙辰", "丁巳", "戊午", "己未", "庚申", "辛酉", "壬戌", "癸亥"};var year = cnDate.GetYear(date);var yearCn = years[cnDate.GetSexagenaryYear(date)];int month = cnDate.GetMonth(date),day = cnDate.GetDayOfMonth(date),leapMonth = cnDate.GetLeapMonth(year);var monthCn = months[month];if (leapMonth > 0){monthCn = month == leapMonth ? $"闰{months[month - 1]}" : monthCn;monthCn = month > leapMonth ? months[month - 1] : monthCn;}return $"{yearCn}年{monthCn}{days[day]}";}/// <summary>///     将阿拉伯数字转换中文日期数字/// </summary>/// <param name="data">日期范围1~31</param>/// <returns>中文日期数字</returns>public static string ToChineseDay(int data){string result = string.Empty;if (!(data == 0 || data > 32)){string[] days ={"〇", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二", "十三", "十四", "十五", "十六", "十七","十八", "十九", "廿十", "廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十", "三十一"};result = days[data];}return result;}/// <summary>///     将阿拉伯数字转换成中文月份数字///     <para>eg:ConvertHelper.ToChineseMonth(1)==> "一"</para>/// </summary>/// <param name="data">月份范围1~12</param>/// <returns>中文月份数字</returns>public static string ToChineseMonth(this int data){var result = string.Empty;if (!(data == 0 || data > 12)){string[] months = { "〇", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二" };result = months[data];}return result;}/// <summary>///     转换成日期/// </summary>/// <param name="data">数据</param>/// <param name="defalut">默认数值</param>/// <returns>日期</returns>public static DateTime ToDateOrDefault(this object data, DateTime defalut){return DateTime.TryParse(data.ToString(), out var result) ? result : defalut;}/// <summary>///     日期转化/// </summary>/// <returns>目标日期</returns>/// <param name="data">数据.</param>public static DateTime ToDateOrDefault(this object data){return ToDateOrDefault(data, DateTime.MinValue);}/// <summary>///     转换成decimal类型/// </summary>/// <param name="data">需要转换的object</param>/// <param name="defalut">默认数值</param>/// <returns>转换返回</returns>public static decimal ToDecimalOrDefault(this object data, decimal defalut = 0m){if (data != null){var result = decimal.TryParse(data.ToString(), out var parsedecimalValue);return result ? parsedecimalValue : defalut;}return defalut;}/// <summary>///     转换成double类型/// </summary>/// <param name="data">需要转换的object</param>/// <param name="defalut">默认数值</param>/// <returns>转换返回</returns>public static double ToDoubleOrDefault(this object data, double defalut = 0d){if (data != null){var result = double.TryParse(data.ToString(), out var parseIntValue);return result ? parseIntValue : defalut;}return defalut;}/// <summary>///     转换成Int32类型/// </summary>/// <param name="data">需要转换的object</param>/// <param name="defalut">默认数值</param>/// <returns>转换返回</returns>public static int ToInt32OrDefault(this object data, int defalut = 0){if (data != null){var result = int.TryParse(data.ToString(), out var parseIntValue);return result ? parseIntValue : defalut;}return defalut;}/// <summary>///     转换成Int64类型/// </summary>/// <param name="data">需要转换的object</param>/// <param name="defalut">默认数值</param>/// <returns>转换返回</returns>public static long ToInt64OrDefault(this object data, long defalut = 0){if (data != null){var result = long.TryParse(data.ToString(), out var parseIntValue);return result ? parseIntValue : defalut;}return defalut;}/// <summary>///     转换成Int类型/// </summary>/// <param name="data">需要转换的object</param>/// <param name="defalut">默认数值</param>/// <returns>转换返回</returns>public static int ToIntOrDefault(this object data, int defalut = 0){if (data != null){var result = int.TryParse(data.ToString(), out var parseIntValue);return result ? parseIntValue : defalut;}return defalut;}/// <summary>///     按照列名称获取Int值/// </summary>/// <param name="row">DataRow</param>/// <param name="columnName">列名称</param>/// <param name="defalut">默认数值</param>/// <returns>若列不等于NULL则返回实际值</returns>public static int ToIntOrDefault(this DataRow row, string columnName, int defalut = 0){if (row != null)if (row.IsNull(columnName))int.TryParse(row[columnName].ToString(), out defalut);return defalut;}/// <summary>///     按照列索引获取Int值/// </summary>/// <param name="row">DataRow</param>/// <param name="columnIndex">列索引</param>/// <param name="defalut">默认数值</param>/// <returns>若列不等于NULL则返回实际值</returns>public static int ToIntOrDefault(this DataRow row, int columnIndex, int defalut = 0){if (row != null)if (row.IsNull(columnIndex))int.TryParse(row[columnIndex].ToString(), out defalut);return defalut;}/// <summary>///     转换成Int16类型/// </summary>/// <param name="data">需要转换的object</param>/// <param name="defalut">默认数值</param>/// <returns>转换返回</returns>public static short ToShortOrDefault(this object data, short defalut){if (data != null){var result = short.TryParse(data.ToString(), out var parseIntValue);return result ? parseIntValue : defalut;}return defalut;}/// <summary>///     泛型数组转换为字符串/// </summary>/// <typeparam name="T">泛型</typeparam>/// <param name="array">泛型数组</param>/// <param name="delimiter">分隔符</param>/// <returns>转换好的字符串</returns>public static string ToString<T>(this T[] array, string delimiter){var data = Array.ConvertAll(array, n => n.ToString());return string.Join(delimiter, data);}/// <summary>///     字符串类型转换/// </summary>/// <typeparam name="T">目标类型</typeparam>/// <param name="data">需要转换的字符串</param>/// <returns>转换类型</returns>public static T ToStringBase<T>(this string data){var result = default(T);if (!string.IsNullOrEmpty(data)){var convert = TypeDescriptor.GetConverter(typeof(T));result = (T)convert.ConvertFrom(data);}return result;}/// <summary>///     转换成string类型/// </summary>/// <param name="data">需要转换的object</param>/// <param name="defalut">默认数值</param>/// <returns>转换返回</returns>public static string ToStringOrDefault(this object data, string defalut){return data == null ? defalut : data.ToString();}/// <summary>///     将时间类型转换为字符串表述/// </summary>/// <param name="data">DateTime</param>/// <param name="formartString">格式化字符串</param>/// <param name="defalut">默认数值</param>/// <returns>字符串</returns>public static string ToStringOrDefault(this DateTime data, string formartString, string defalut){if (data != default) return data.ToString(formartString);return defalut;}/// <summary>///     按照列名称获取Sting值/// </summary>/// <param name="row">DataRow</param>/// <param name="columnName">列名称</param>/// <param name="defalut">默认数值</param>/// <returns>若列不等于NULL则返回实际值</returns>public static string ToStringOrDefault(this DataRow row, string columnName, string defalut){if (row != null) defalut = row.IsNull(columnName) ? defalut : row[columnName].ToString();return defalut;}/// <summary>///     按照列索引获取Sting值/// </summary>/// <param name="row">DataRow</param>/// <param name="columnIndex">列索引</param>/// <param name="defalut">默认数值</param>/// <returns>若列不等于NULL则返回实际值</returns>public static string ToStringOrDefault(this DataRow row, int columnIndex, string defalut){if (row != null) defalut = row.IsNull(columnIndex) ? defalut : row[columnIndex].ToString().Trim();return defalut;}/// <summary>///     转换成ushort类型/// </summary>/// <param name="data">需要转换的object</param>/// <param name="defalut">默认数值</param>/// <returns>转换返回</returns>public static ushort ToUShortOrDefault(this object data, ushort defalut){if (data != null){var result = ushort.TryParse(data.ToString(), out var parseUShortValue);return result ? parseUShortValue : defalut;}return defalut;}/// <summary>///     将字符串转换为Guid/// </summary>/// <returns>期待guid</returns>/// <param name="data">数值.</param>public static Guid ToGuidOrDefault(this string data){return ToGuidOrDefault(data, Guid.Empty);}/// <summary>///     将字符串转换为Guid/// </summary>/// <param name="data">需要转换的字符串</param>/// <param name="defalut">默认数值</param>/// <returns>转换返回</returns>public static Guid ToGuidOrDefault(this string data, Guid defalut){Guid result;if (Guid.TryParse(data, out result))return result;return defalut;}#endregion Methods}
}

代码使用

  1. 实现很简单,所以使用也很简单,假如您还是很懒的话,去Star下,我告诉您怎么用,哈哈哈~

结语

  1. 小弟不才,大佬轻拍;

转载于:https://www.cnblogs.com/MeetYan/p/10733014.html

类型转换一种处理方式相关推荐

  1. PHP中数据类型转换有多少种,PHP中数据类型转换的三种方式

    PHP的数据类型转换属于强制转换,允许转换的PHP数据类型有: 1.(int).(integer):转换成整形 2.(float).(double).(real):转换成浮点型 3.(string): ...

  2. 函数指针的两种调用方式

    void test(int); int main(void){void (*fp)(int);fp=test;(*fp)(9); fp(9);return 0; } void test(int a) ...

  3. node.js Next框架的三种渲染方式:客户端渲染、SSG、SSR

    前言 next是一款用JS开发的全栈框架,它是基于express框架基础上开发而成,可以用react写客户端,node.js写服务端.一份代码可在前后端同时运行,这在next中称之为同构! 一些nex ...

  4. 数据库的8种优化方式

    前言: 关于数据库的优化方案,网上有不少资料和方法,但众说纷纭,作品良莠不齐,不是缺斤少两,就是过于冗余. 在浏览了很多文章之后觉得这篇文章,总结得很经典,文章流量也很大,所以拿来和大家分享,积累优质 ...

  5. python中字符串输出的三种简单方式

    python字符串输出的三种简单方式 第一种: 用'+'号进行字符串的拼接,但只限于字符串,不能进行其他类型的拼接.但是可以进行强制类型转换(字符串的强制转换为str(名字)),再用加号进行拼接. 比 ...

  6. Hive metastore三种配置方式

    Hive的meta数据支持以下三种存储方式,其中两种属于本地存储,一种为远端存储.远端存储比较适合生产环境.Hive官方wiki详细介绍了这三种方式,链接为:Hive Metastore. 一.本地d ...

  7. c语言程序设计分段定时器,单片机C语言编程定时器的几种表达方式

    原标题:单片机C语言编程定时器的几种表达方式 吴鉴鹰单片机开发板地址 店铺:[吴鉴鹰的小铺] 地址:[https://item.taobao.com/item.htm?_u=ukgdp5a7629&a ...

  8. C++中的两种绑定方式(静态绑定、动态绑定)

    两种绑定方式 静态绑定:在编译时刻,根据指针或引用变量的静态类型来决定成员函数属于哪一个类. 动态绑定:在运行时刻,根据指针或引用变量实际指向或引用的对象类型(动态类型)来确定成员函数属于哪一个类. ...

  9. python数据结构与算法:二叉树及三种遍历方式(先序遍历/中序遍历/后序遍历)

    树的实现采用queue的形式: 树的三种遍历方式(广度优先白能力法):先序遍历(根左右),中序遍历(左根右)以及后序遍历(左右根) ######################P6.4 数据结构### ...

最新文章

  1. libcurl+ncurses 分段range批量下载和进度条显示源码实例
  2. 职场的你,如何《赢》?
  3. Linux下多路复用IO接口epoll/select/poll的区别
  4. [攻克存储] 掌握SDRAM/DDR的结构与寻址
  5. Microsoft Bot Framework 上手
  6. 使用Spring Initializer快速创建Spring Boot项目
  7. C#.net调用动态库dll注意事项
  8. 中国海外投资在非洲市场的开放政策
  9. 使用pos标记寻找三词短语
  10. iis mysql5.7_手动配置网站环境 IIS 10+PHP 7.1+MySQL 5.7
  11. call_once/once_flag的使用
  12. 1.5 编程基础之循环控制 44 第n小的质数
  13. Mac os x 系统的发展史
  14. android注销广播接收器,使用广播接收器 - chuiyuan的个人页面 - OSCHINA - 中文开源技术交流社区...
  15. arcgis字段求和_arcgis计算命令
  16. 常见的分布期望及其方差
  17. 02虚幻编辑器各部分功能详解
  18. STM32F107VCTx HAL库 USART通信 DMA通信 友善串口调试助手 PL2303驱动安装
  19. DE2-115 以太网通信之一88E1111网卡接收PC数据
  20. Java子类和父类的初始化执行顺序

热门文章

  1. python generator长度_Python 高级特性之:生成器(generator)和迭代器(Iterator)
  2. php程序转net,asp,asp.net,php,jsp下的301转向代码,整站重定向
  3. 计算机学院品牌活动,安阳师范学院 计算机学院成功举办校园文化品牌活动“一月一赛”之三笔字比赛...
  4. layui搭建的php后台,使用layui框架搭建后台布局
  5. python中的matlibplot_python中如何用matlibplot画时间序列图?
  6. atom python教程_对于新手来说 如何用atom搭建python的ide?
  7. 百度api 一直提示token错误_phpcms小程序插件小程序万能接口api(支持微信、百度)...
  8. oracle update并行,Oracle update 优化方式,tuning update!
  9. vue 项目文件介绍
  10. pytorch Tensor.backward