c#字符串怎么转换数字
5个回答
2013-07-27
展开全部
/// <summary>
/// 自定义数字解析函数
/// 作者:三角猫
/// 说明:如果输入的字符串为空或非数字开头则返回0,否则返回解析结果
/// </summary>
/// <param name="v">输入的字符串</param>
/// <returns>解析后的结果</returns>
static double CustomNumericParse(string v)
{
if (string.IsNullOrEmpty(v)) return 0d; //如果输入的字符串为空或NULL,则直接返回0
if (!char.IsDigit(v[0])) return 0d; //如果输入的字符串是非数字开头,直接返回0
string subV = string.Empty;
for (int i = 0; i < v.Length; i++)
{
if (char.IsDigit(v[i]) || (v[i].Equals('.') && !subV.Contains("."))) //从左至右,判断字符串的每位字符是否是数字或小数点,小数点只保留第一个
subV += v[i];
else
break;
}
subV.TrimEnd(new char[] { '.' }); // 如果解析后的子字符串的末位是小数点,则去掉它
double returnV = 0d;
if (subV.Contains(".")) // 如果解析结果包含小数点,则根据小数点分两段求值
{
string strPointRight = subV.Substring(subV.IndexOf('.') + 1); //小数点右侧部分
subV = subV.Substring(0, subV.IndexOf('.')); //小数点左侧部分
//计算小数点右侧的部分
for (int i = 0; i < strPointRight.Length; i++)
{
returnV += ((int)strPointRight[i] - 48) / Math.Pow(10, i+1); //(int)strPointRight[i] 是取该字符的ASCII码
}
}
//计算小数点左侧的部分
int iLen = subV.Length; //小数点左侧部分的长度
for (int i = 0; i < iLen; i++)
{
returnV += ((int)subV[i] - 48) * Math.Pow(10, iLen - 1 - i); //按位乘以10的幂,并和小数点右侧结果相加
}
return returnV;
}
//使用方法
string a = "123.98adfd"; Console.Write(CustomNumericParse(a));
另一方法:通过 ASCIIEncoding
///
/// 判断是否是数字
///
/// 字符串 ///
public static bool IsNumeric(string str)
{
if (str == null || str.Length == 0 || str == string.Empty)
return false;
System.Text.ASCIIEncoding ascii = new System.Text.ASCIIEncoding();
byte[] bytestr = ascii.GetBytes(str);
foreach (byte c in bytestr)
{
if (c < 48 || c > 57)
{
return false;
}
}
return true;
}
/// 自定义数字解析函数
/// 作者:三角猫
/// 说明:如果输入的字符串为空或非数字开头则返回0,否则返回解析结果
/// </summary>
/// <param name="v">输入的字符串</param>
/// <returns>解析后的结果</returns>
static double CustomNumericParse(string v)
{
if (string.IsNullOrEmpty(v)) return 0d; //如果输入的字符串为空或NULL,则直接返回0
if (!char.IsDigit(v[0])) return 0d; //如果输入的字符串是非数字开头,直接返回0
string subV = string.Empty;
for (int i = 0; i < v.Length; i++)
{
if (char.IsDigit(v[i]) || (v[i].Equals('.') && !subV.Contains("."))) //从左至右,判断字符串的每位字符是否是数字或小数点,小数点只保留第一个
subV += v[i];
else
break;
}
subV.TrimEnd(new char[] { '.' }); // 如果解析后的子字符串的末位是小数点,则去掉它
double returnV = 0d;
if (subV.Contains(".")) // 如果解析结果包含小数点,则根据小数点分两段求值
{
string strPointRight = subV.Substring(subV.IndexOf('.') + 1); //小数点右侧部分
subV = subV.Substring(0, subV.IndexOf('.')); //小数点左侧部分
//计算小数点右侧的部分
for (int i = 0; i < strPointRight.Length; i++)
{
returnV += ((int)strPointRight[i] - 48) / Math.Pow(10, i+1); //(int)strPointRight[i] 是取该字符的ASCII码
}
}
//计算小数点左侧的部分
int iLen = subV.Length; //小数点左侧部分的长度
for (int i = 0; i < iLen; i++)
{
returnV += ((int)subV[i] - 48) * Math.Pow(10, iLen - 1 - i); //按位乘以10的幂,并和小数点右侧结果相加
}
return returnV;
}
//使用方法
string a = "123.98adfd"; Console.Write(CustomNumericParse(a));
另一方法:通过 ASCIIEncoding
///
/// 判断是否是数字
///
/// 字符串 ///
public static bool IsNumeric(string str)
{
if (str == null || str.Length == 0 || str == string.Empty)
return false;
System.Text.ASCIIEncoding ascii = new System.Text.ASCIIEncoding();
byte[] bytestr = ascii.GetBytes(str);
foreach (byte c in bytestr)
{
if (c < 48 || c > 57)
{
return false;
}
}
return true;
}
2013-07-27
展开全部
一般都可以用两种方法:
如下代码所以示:
//先新建两个string字段.
string str1="123";
string str2="100";
//将str字符串变量转换成int并存放到int类型的int_var字段中.有两种方法:
int int_var1,int_var2;
//方法一:
int_var = Convert.ToInt32(str1);
//方法二:
int_var = int.parse(str2);
Console.WriteLine("str1字符串值为:{0} + str2字符串值为:{1},结果为:{2}",str1,str2,str1+str2);
Console.WriteLine("str1字符串转为int:{0} + str2字符串转为int:{1},结果为:{2}",int_var1,int_var2,int_var1+int_var2);
Console.ReadLine();
//把以上这些代码复制到某个控制台应用程序的Main()函数下,运行即可看到结果.
如下代码所以示:
//先新建两个string字段.
string str1="123";
string str2="100";
//将str字符串变量转换成int并存放到int类型的int_var字段中.有两种方法:
int int_var1,int_var2;
//方法一:
int_var = Convert.ToInt32(str1);
//方法二:
int_var = int.parse(str2);
Console.WriteLine("str1字符串值为:{0} + str2字符串值为:{1},结果为:{2}",str1,str2,str1+str2);
Console.WriteLine("str1字符串转为int:{0} + str2字符串转为int:{1},结果为:{2}",int_var1,int_var2,int_var1+int_var2);
Console.ReadLine();
//把以上这些代码复制到某个控制台应用程序的Main()函数下,运行即可看到结果.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-27
展开全部
Convert.ToInt32(string)
int.parse(string)两种都可以,注意的是:前者还可是:Convert.ToInt16(string),Convert.ToInt64(string).后者方法的参数只能是string类型的
int.parse(string)两种都可以,注意的是:前者还可是:Convert.ToInt16(string),Convert.ToInt64(string).后者方法的参数只能是string类型的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-27
展开全部
Convert.ToInt32(string)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-27
展开全部
int。parse(string)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询