C#中处理字符串和数字
2007-04-13 15:57
337 查看
在CSDN上有人问:C#中有没有判断一个string类型变量是否为数字类型的系统函数(如vb中的IsNumeric(s))?
答案肯定是没有的。有人提议用int.Parse(string)的方法,然后通过捕获异常来判断返回的值。更好的方法是用正则表达式:
public int IsNumeric(string str)
{
int i;
if(str != null && Regex.IsMatch(str,@"^\d+$"))
i = int.Parse(str);
else
i = -1;
return i;
}
这应该是个好办法。不过如果要提出更高的要求,例如不仅要判断字符串是否全为数字,还要在判断后,要求将其进行转换。那么上述函数就有缺陷,因为在
上面的正则表达式中无法判断‘-’符号。因此上面的函数只能转换非负数。尤有甚者,要求转换的不仅是整数,还包括浮点数,尤其是科学计数法的字符串,例
如:string s = "-3.14159E+10"
这里面的'E'、'.'、'+'等字符,都是比较特殊的,而且还要求它们出现的位置要符合浮点数或科学计数方法的规定。那么就不能使用正则表达式
了,至少很麻烦(我是这样认为的,或许有好的方法)。问题还是回到最初的解决方案,就是使用Parse()方法和捕获异常。以下是实现此功能的方法:
public bool IsNumeric(string s, out double result)
{
bool bReturn = true;
try
{
result = double.Parse(s);
}
catch
{
result = 0;
bReturn = false;
}
return bReturn;
}
例如调用:
string s1="abc";
string s2="-3.14159E+10";
double d1,d2;
bool ty1 = IsNumeric(s1,out d1);
bool ty2 = IsNumeric(s2,out d2);
结果:
ty1=false;d1=0;
ty2=true;d2=31415900000
说明:因为涉及到浮点数,就不能使用-1来做为出现错误的返回值,如前面的例子。也就是说本方法有两个返回值,一个是判断转换是否成功,为bool型;另一个是转换成功后的浮点数值。我用out来解决该问题。
本方法仍然适合整型,只需对返回值进行强制转换即可。
posted on 2004-05-17 15:40 Bruce Zhang 阅读(1985) 评论(4) 编辑 收藏 引用 网摘 所属分类: C# Programming
//sys.webforms.pagerequestmanager._initialize('ajaxholder$scriptmanager1', document.getElementById('Form1'));
Sys.WebForms.PageRequestManager.getInstance()._updateControls(['tAjaxHolder$UpdatePanel1'], [], [], 90);
//]]>
不错,谢谢 回复 更多评论
非常感谢!
前段时间在寻找这个问题的答案,没有想到隐藏在这里! 回复 更多评论
用了异常捕获,效率是个问题。
再说不用这么麻烦,直接用TryParse方法就可以。
下面是我从帮助文档拷贝出来的:)
将数字的字符串表示形式转换为它的等效双精度浮点数字。一个指示转换是否成功的返回值。
public static bool TryParse (
string s,
out double result
)
答案肯定是没有的。有人提议用int.Parse(string)的方法,然后通过捕获异常来判断返回的值。更好的方法是用正则表达式:
public int IsNumeric(string str)
{
int i;
if(str != null && Regex.IsMatch(str,@"^\d+$"))
i = int.Parse(str);
else
i = -1;
return i;
}
这应该是个好办法。不过如果要提出更高的要求,例如不仅要判断字符串是否全为数字,还要在判断后,要求将其进行转换。那么上述函数就有缺陷,因为在
上面的正则表达式中无法判断‘-’符号。因此上面的函数只能转换非负数。尤有甚者,要求转换的不仅是整数,还包括浮点数,尤其是科学计数法的字符串,例
如:string s = "-3.14159E+10"
这里面的'E'、'.'、'+'等字符,都是比较特殊的,而且还要求它们出现的位置要符合浮点数或科学计数方法的规定。那么就不能使用正则表达式
了,至少很麻烦(我是这样认为的,或许有好的方法)。问题还是回到最初的解决方案,就是使用Parse()方法和捕获异常。以下是实现此功能的方法:
public bool IsNumeric(string s, out double result)
{
bool bReturn = true;
try
{
result = double.Parse(s);
}
catch
{
result = 0;
bReturn = false;
}
return bReturn;
}
例如调用:
string s1="abc";
string s2="-3.14159E+10";
double d1,d2;
bool ty1 = IsNumeric(s1,out d1);
bool ty2 = IsNumeric(s2,out d2);
结果:
ty1=false;d1=0;
ty2=true;d2=31415900000
说明:因为涉及到浮点数,就不能使用-1来做为出现错误的返回值,如前面的例子。也就是说本方法有两个返回值,一个是判断转换是否成功,为bool型;另一个是转换成功后的浮点数值。我用out来解决该问题。
本方法仍然适合整型,只需对返回值进行强制转换即可。
posted on 2004-05-17 15:40 Bruce Zhang 阅读(1985) 评论(4) 编辑 收藏 引用 网摘 所属分类: C# Programming
//sys.webforms.pagerequestmanager._initialize('ajaxholder$scriptmanager1', document.getElementById('Form1'));
Sys.WebForms.PageRequestManager.getInstance()._updateControls(['tAjaxHolder$UpdatePanel1'], [], [], 90);
//]]>
评论
# re: C#中处理字符串和数字
2005-09-21 01:49
算法
不错,谢谢 回复 更多评论
# re: C#中处理字符串和数字
2006-07-10 16:45
nowaywolf
非常感谢!前段时间在寻找这个问题的答案,没有想到隐藏在这里! 回复 更多评论
# re: C#中处理字符串和数字
2006-11-17 12:00
小峰
用了异常捕获,效率是个问题。再说不用这么麻烦,直接用TryParse方法就可以。
下面是我从帮助文档拷贝出来的:)
将数字的字符串表示形式转换为它的等效双精度浮点数字。一个指示转换是否成功的返回值。
public static bool TryParse (
string s,
out double result
)
相关文章推荐
- C# asp.net中常见的字符串处理函数及数字格式化
- C#中处理字符串和数字
- C#字符串处理(数字类)
- C#中的字符串处理——找出最长数字子串
- C#中处理字符串和数字
- C# asp.net中常见的字符串处理函数及数字格式化
- C#中处理字符串和数字
- C# asp.net中常见的字符串处理函数及数字格式化
- C# asp.net中常见的字符串处理函数及数字格式化
- [C#]将普通数字转换成带前置0的字符串的简便方法
- c# 判断字符串数字
- C#中根据字节处理字符串(含中文字符)
- C#中字符串处理的一些自定义方法
- Delphi中处理字符串,LastDelimiter相当于C#中的LastIndexOf
- 字符串处理问题----判断是否有效数字和unix路径简化
- 【整理】C# ToString格式字符串整理(Format)(数字、日期和枚举的标准格式设置说明符)(SamWang)
- Win8 Metro(C#)数字图像处理--2.75灰度图像的形态学算法
- C# 的数据类型转换 c#字符串转换格式 c#日期数字字符串整形格式转换
- 有一字符串,包含数字与字母,编程去除数字。要求:1、要求在原字符串中操作 2、使用指针处理
- C#基础---C#如何对Json字符串处理