C#学习总结(Copy from somewhere)


去掉字符串中的所有空格:

            char[] P_chr = txt_str.Text.ToCharArray();//得到字符数组
            IEnumerator P_ienumerator_chr = //得到枚举器
                P_chr.GetEnumerator();
            StringBuilder P_stringbuilder = //创建stringbuilder对象
                new StringBuilder();
            while (P_ienumerator_chr.MoveNext())//开始枚举
            {
                P_stringbuilder.Append(//向stringbuilder对象中添加非空格字符
                    (char)P_ienumerator_chr.Current != ' ' ?
                    P_ienumerator_chr.Current.ToString() : string.Empty);
            }
            txt_removeblank.Text = //得到没有空格的字符串
                P_stringbuilder.ToString();

用CryptoStream类加密解密字符串:

using System.Security.Cryptography;

public class Encrypt
    {

        internal string ToEncrypt(string encryptKey, string str)
        {
            try
            {
                byte[] P_byte_key = //将密钥字符串转换为字节序列
                    Encoding.Unicode.GetBytes(encryptKey);
                byte[] P_byte_data = //将字符串转换为字节序列
                    Encoding.Unicode.GetBytes(str);
                MemoryStream P_Stream_MS = //创建内存流对象
                    new MemoryStream();
                CryptoStream P_CryptStream_Stream = //创建加密流对象
                    new CryptoStream(P_Stream_MS,new DESCryptoServiceProvider().
                   CreateEncryptor(P_byte_key, P_byte_key),CryptoStreamMode.Write);
                P_CryptStream_Stream.Write(//向加密流中写入字节序列
                    P_byte_data, 0, P_byte_data.Length);
                P_CryptStream_Stream.FlushFinalBlock();//将数据压入基础流
                byte[] P_bt_temp =//从内存流中获取字节序列
                    P_Stream_MS.ToArray();
                P_CryptStream_Stream.Close();//关闭加密流
                P_Stream_MS.Close();//关闭内存流
                return //方法返回加密后的字符串
                    Convert.ToBase64String(P_bt_temp);
            }
            catch (CryptographicException ce)
            {
                throw new Exception(ce.Message);
            }
        }

        internal string ToDecrypt(string encryptKey, string str)
        {
            try
            {
                byte[] P_byte_key = //将密钥字符串转换为字节序列
                    Encoding.Unicode.GetBytes(encryptKey);
                byte[] P_byte_data = //将加密后的字符串转换为字节序列
                    Convert.FromBase64String(str);
                MemoryStream P_Stream_MS =//创建内存流对象并写入数据
                    new MemoryStream(P_byte_data);
                CryptoStream P_CryptStream_Stream = //创建加密流对象
                    new CryptoStream(P_Stream_MS,new DESCryptoServiceProvider().
                    CreateDecryptor(P_byte_key, P_byte_key),CryptoStreamMode.Read);
                byte[] P_bt_temp = new byte[200];//创建字节序列对象
                MemoryStream P_MemoryStream_temp =//创建内存流对象
                    new MemoryStream();
                int i = 0;//创建记数器
                while ((i = P_CryptStream_Stream.Read(//使用while循环得到解密数据
                    P_bt_temp, 0, P_bt_temp.Length)) > 0)
                {
                    P_MemoryStream_temp.Write(//将解密后的数据放入内存流
                        P_bt_temp, 0, i);
                }
                return //方法返回解密后的字符串
                    Encoding.Unicode.GetString(P_MemoryStream_temp.ToArray());
            }
            catch (CryptographicException ce)
            {
                throw new Exception(ce.Message);
            }
        }
    }



对计算结果进行四舍五入:

 /// <summary>
        /// 计算double值四舍五入的方法
        /// </summary>
        /// <param name="dbl">进行四舍五入的数值</param>
        /// <param name="i">保留的小数位</param>
        /// <returns>返回四舍五入后的double值</returns>
        internal double Round(double dbl, int i)
        {
            string P_str_dbl = dbl.ToString();//将double数值转换为字符串
            string P_str_lower = //将double数值小数位转换为字符串
                P_str_dbl.Split('.')[1];
            int P_str_length = P_str_lower.Length;//计算double数值小数位长度
            dbl += GetValue(i, P_str_length);//开始进行四舍五入运算
            P_str_dbl = dbl.ToString();//将运算后的值转换为字符串
            if (P_str_dbl.Contains("."))//判断是否存在小数位
            {
                string P_str_upper = //得到整数位字符串
                    P_str_dbl.Split('.')[0];
                P_str_lower = P_str_dbl.Split('.')[1];//得到小数位字符串
                if (P_str_lower.Length > i)//判断数值位数是否大于保留小数位数
                {
                    P_str_lower = P_str_lower.Substring(//截取保留的小数位
                        0, i);
                    return double.Parse(//返回double数值
                        P_str_upper + "." + P_str_lower);
                }
                else
                {
                    return double.Parse(P_str_dbl);//如数值位数小于保留小数位数则直接返回
                }
            }
            else
            {
                return double.Parse(P_str_dbl);//如果没有小数位则直接返回值
            }
        }

        /// <summary>
        /// 得到小数数值的方法
        /// </summary>
        /// <param name="int_null">四舍五入保留的位数</param>
        /// <param name="length">四舍五入丢失的位数</param>
        /// <returns>返回小数值用于四舍五入计算</returns>
        internal double GetValue(int int_null, int length)
        {
            string P_str_dbl = "0.";//定义字符串变量并赋值
            for (int i = 0; i < length; i++)//使用for循环添加小数位
            {
                if (i > int_null - 1)
                {
                    P_str_dbl += "5";//向小数的四舍五入部分加5
                }
                else
                {
                    P_str_dbl += "0";//向小数的保留部分加0
                }
            }
            return double.Parse(P_str_dbl);//返回小数数值
        }

商品金额的大小写转换:

 class Upper
    {
        public string NumToChinese(string x)
        {
            //数字转换为中文后的数组
            string[] P_array_num = new string[] { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
            //为数字位数建立一个位数组
            string[] P_array_digit = new string[] { "", "拾", "佰", "仟" };
            //为数字单位建立一个单位数组
            string[] P_array_units = new string[] { "", "万", "亿", "万亿" };
            string P_str_returnValue = ""; //返回值
            int finger = 0; //字符位置指针
            int P_int_m = x.Length % 4; //取模
            int P_int_k = 0;
            if (P_int_m > 0)
                P_int_k = x.Length / 4 + 1;
            else
                P_int_k = x.Length / 4;
            //外层循环,四位一组,每组最后加上单位: ",万亿,",",亿,",",万,"
            for (int i = P_int_k; i > 0; i--)
            {
                int P_int_L = 4;
                if (i == P_int_k && P_int_m != 0)
                    P_int_L = P_int_m;
                //得到一组四位数
                string four = x.Substring(finger, P_int_L);
                int P_int_l = four.Length;
                //内层循环在该组中的每一位数上循环
                for (int j = 0; j < P_int_l; j++)
                {
                    //处理组中的每一位数加上所在的位
                    int n = Convert.ToInt32(four.Substring(j, 1));
                    if (n == 0)
                    {
                        if (j < P_int_l - 1 && Convert.ToInt32(four.Substring(j + 1, 1)) > 0 && !P_str_returnValue.EndsWith(P_array_num[n]))
                            P_str_returnValue += P_array_num[n];
                    }
                    else
                    {
                        if (!(n == 1 && (P_str_returnValue.EndsWith(P_array_num[0]) | P_str_returnValue.Length == 0) && j == P_int_l - 2))
                            P_str_returnValue += P_array_num[n];
                        P_str_returnValue += P_array_digit[P_int_l - j - 1];
                    }
                }
                finger += P_int_L;
                //每组最后加上一个单位:",万,",",亿," 等
                if (i < P_int_k) //如果不是最高位的一组
                {
                    if (Convert.ToInt32(four) != 0)
                        //如果所有4位不全是0则加上单位",万,",",亿,"等
                        P_str_returnValue += P_array_units[i - 1];
                }
                else
                {
                    //处理最高位的一组,最后必须加上单位
                    P_str_returnValue += P_array_units[i - 1];
                }
            }
            return P_str_returnValue;
        }
    }






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值