处理数字相关的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);
希望对大家有所帮助。
// 转载请注明出处。