源代码共享:C#数据格式转换汇总

本人积累了十年的C#数据转换代码,包含字符串、数值、日期、生日/年龄、大写金额、图像、数据流、空值等转换。在多年项目开发中经过不断更新,遇到的bug也都修正,写程序的时候会非常方便快捷,而且会减少大量不必要的条件判断避免出错。尤其一些常用转换可以不考虑数据类型直接操作而不出错。可以在项目中直接引用,都是静态方法,不需要实例化。类名称使用ConvertValue或者Cvt都可以。

下载:C#数据格式转换汇总源代码

常用方法举例:

object value = 23;
string txt = Cvt.ToS(value);//任意数据转字符串,如果是空值则返回空字符""
txt = Cvt.ToString(value, "abc");//如果是空值则返回abc
int i = Cvt.ToInt(value);//如果不是数值或者是空值则返回0
i = Cvt.ToInt(value, 10);//如果不是数值或者是空值则返回10
double d = Cvt.ToDouble(value);
string date = Cvt.Date10(DateTime.Now);//日期格式2020-01-01
date = Cvt.Date19(DateTime.Now);//日期格式2020-01-01 13:25:10.
//在数据库操作中尽量用这种格式的字符串保存时间,
//否则有可能因为操作系统日期格式不同出错,比如中间穿插着星期。
date = Cvt.Date14(DateTime.Now);//格式20200101132510,可用于生成单号
if (Cvt.IsNull(value)) ;//判断是否空值(Null、DBNull.Value、"")
if (Cvt.IsNumber(value)) ;//判断是否数值
if (Cvt.IsDate(value)) ;//判断是否日期
int age = Cvt.ToAge("1999-01-20");//生日转年龄
Image image = null;
byte[] data = Cvt.ImageToStream(image, ImageFormat.Jpeg);//图像转数据流,可以保存到数据库
image = Cvt.StreamToImage(data);//数据流转图像,可用于从数据库读取图像
string imgString = Cvt.ImageToStringBase64(image);//图像转字符串,可以保存到数据库或者文本文件
image = Cvt.StringBase64ToImage(imgString);//字符串转图像
image = Cvt.ImageSize(image, 200, 300);//改变图像尺寸
txt = Cvt.PadLeftBytes(txt, 10, '*');//根据指定字节长度在左边填充字符
txt = Cvt.PadRightBytes(txt, 10, '*');//根据指定字节长度在右边填充字符
txt = Cvt.ByteToString(data);//数据流转字符串

部分源代码(完整源代码请下载使用):

/// <summary>
/// 转换为字符串(ToString的简写)。如空值则返回""
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static string ToS(object value)
{
    if (value == null || value == DBNull.Value)
        return "";
    else
        return value.ToString();
}
/// <summary>
/// 将日期转换为字符串。格式:yyyy-MM-dd
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static string Date10(object date)
{
    if (IsDate(date))
        return Date10(ToDateTime(date));
    else
        return "";
}
/// <summary>
/// 将日期转换为字符串。格式:yyyy-MM-dd
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
public static string Date10(DateTime date)
{
    if (date == null)
        return "";
    else
        return date.ToString("yyyy-MM-dd");
}
/// <summary>
/// 转换为double。如空值则返回0
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static double ToDouble(object value)
{
    double excode = 0;
    if (IsNotNull(value))
    {
        double.TryParse(value.ToString(), out excode);
    }
    return excode;
}
/// <summary>
/// 将图像保存到数据流
/// </summary>
/// <param name="img">图像</param>
/// <param name="format">图像格式</param>
/// <returns>数据流</returns>
public static byte[] ImageToStream(Image img, ImageFormat format)
{
    if (img == null)
        return null;
    MemoryStream ms = new MemoryStream();
    Image imNew = new Bitmap(img);
    imNew.Save(ms, format);
    byte[] bytes = ms.ToArray();
    ms.Close();
    return bytes;
}
/// <summary>
/// 将数据流转成图像
/// </summary>
/// <param name="datas">数据流</param>
/// <returns>图像</returns>
public static Image StreamToImage(byte[] datas)
{
    if (datas == null)
        return null;
    Image img = null;
    try
    {
        MemoryStream ms = new MemoryStream(datas);
        if (datas[0] == 0)
        {
            BinaryFormatter binFormatter = new BinaryFormatter();
            img = (Image)binFormatter.Deserialize(ms);
        }
        else
        {
            img = Image.FromStream(ms, true);
        }
        ms.Close();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
    return img;
}
/// <summary>
/// 检查是否空值(Null、DBNull.Value、"")
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static bool IsNullOrEmpty(object value)
{
    if (value == null || value == DBNull.Value || value.ToString() == "")
        return true;
    else
        return false;
}
/// <summary>
/// 当前值是否数值
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static bool IsNumber(object value)
{
    decimal v = 0;
    if (IsNullOrEmpty(value) == false && decimal.TryParse(value.ToString(), out v))
    {
        return true;
    }
    else
        return false;
}
/// <summary>
/// 根据指定字节长度在右边填充字符
/// </summary>
/// <param name="text">原始字符串</param>
/// <param name="maxTrueLength">字节长度</param>
/// <param name="chrPad">填充字符</param>
/// <returns></returns>
public static string PadRightBytes(string text, int maxTrueLength, char chrPad)
{
    string strNew = text;
    if (text == null || maxTrueLength <= 0)
    {
        return strNew;
    }
    int trueLen = Encoding.Default.GetBytes(text).Length;//字节长度
    if (trueLen < maxTrueLength)
    {
        strNew = strNew.PadRight(maxTrueLength - trueLen + text.Length, chrPad);
    }
    return strNew;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值