处理数字相关的C#类源码

处理数字相关的C#类源码

在编程过程中,经常会遇到处理数字的问题,比如一个要从一个TextBox里面取数参与计算,但是,如果TextBox里面是空的,直接取值计算就要出错。为了解决类似的问题,自己写了几段代码分享出来。

刚接触C#不就,以下代码有更好的实现方式,可交流下。

源代码如下:

class MyFunction
    {
            /// <summary>
        /// 提取字符串中数字,并以string类型返回。包含最开始的负号和第一个小数点。
        /// </summary>
        /// <param name="Str">要处理的字符串</param>
        /// <returns></returns>
        public static string OnlyNumbers(string Str)
        {
            string s = "";
            //取出字符串中的    - . 0到9的数字
            foreach (char c in Str)
            {

                if ("-.0123456789".IndexOf(c) > -1)
                {
                    s = s + Convert.ToString(c);
                }
            }
            //Console.WriteLine(s);
            //去掉字符串中间的负号
            int i = 0;
            string s2 = "";
            foreach (char c in s)
            {
                i++;
                if (Convert.ToString(c) == "-" && i > 1)
                { }
                else
                {
                    s2 = s2 + Convert.ToString(c);
                }
            }
            //Console.WriteLine(s2);
            //去掉字符串多余的小数点
            bool hasDec = false;
            string s3 = "";
            foreach (char c in s2)
            {
                if (Convert.ToString(c) == ".")
                {
                    if (hasDec == false)
                    {
                        s3 = s3 + Convert.ToString(c);
                        hasDec = true;
                    }
                }
                else
                {
                    s3 = s3 + Convert.ToString(c);
                }
            }
            //Console.WriteLine(s3);
            return s3;


        }

        /// <summary>
        /// 将字符串转为整数。提取字符串中的数字,如果字符串是空或者没有数字,则返回0
        /// </summary>
        /// <param name="myString">字符串</param>
        /// <returns></returns>
        public static int Str2Int32(string myString)
        {
            if (string.IsNullOrEmpty(myString))
            {
                return 0;
            }
            else
            {
                string s = OnlyNumbers(myString);
                //Console.WriteLine(s);
                if (s.Length == 0)
                {
                    return 0;
                }
                else
                {
                    return Convert.ToInt32(Math.Round(Convert.ToDecimal(s), 0));
                }
            }
        }

        /// <summary>
        /// 将字符串转为小数。提取字符串中的数字,如果字符串是空或者没有数字,则返回0
        /// </summary>
        /// <param name="myString">字符串</param>
        /// <returns></returns>
        public static decimal Str2Dec(string myString)
        {
            try
            {
                if (myString.Length == 0 || myString == string.Empty)
                {
                    return 0;
                }
                else
                {
                    string s = OnlyNumbers(myString);
                    if (s.Length == 0 || s.Trim() == "")
                    {
                        return 0;
                    }
                    else
                    {
                        return Convert.ToDecimal(s);
                    }
                }
            }
            catch
            {
                return 0;
            }

        }
        /// <summary>
        /// 生成范围内指定数量的随机整数。返回数组
        /// </summary>
        /// <param name="quantity">要生成随机整数的数量</param>
        /// <param name="minNumber">随机数最小值</param>
        /// <param name="maxNumber">随机数最大值</param>
        /// <returns></returns>
        public static int[] RandBtween(int quantity, int minNumber, int maxNumber)
        {
            int j;
            int[] b = new int[quantity];

            byte[] buffer = Guid.NewGuid().ToByteArray();//生成字节数组
            int iRoot = BitConverter.ToInt32(buffer, 0);//利用BitConvert方法把字节数组转换为整数
            Random r = new Random(iRoot);//以这个生成的整数为种子
            for (j = 0; j < quantity; j++)
            {
                //System.Threading.Thread.Sleep(1);
                int i = r.Next(minNumber, maxNumber + 1);
                int num = 0;
                for (int k = 0; k < j; k++)
                {
                    if (b[k] == i)
                    {
                        num = num + 1;
                    }
                }
                if (num == 0)
                {
                    b[j] = i;
                }
                else
                {
                    j = j - 1;
                }
            }
            return b;
        }

    }

使用方法:

假如要获取窗体中Textbox1中的数字,且以整数形式返回值并赋值给变量 a 则:

int a=MyFunction.Str2Int32(TextBox1.Text);

希望对大家有所帮助。

// 转载请注明出处。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值