问题描述
Q:如何把string解析为int?A:简单的方法有三种:stringsource="1412";intresult=0;//使用Convert.ToInt32(stringvalue);result=Convert.ToInt32(source);//使用Int32.Parse(stringvalue);result=Int32.Parse(source);//使用Int32.TryParse(strings,outintresult);Int32.TryParse(source,outresult);Q:这三种方法有什么不同?A:一个简单的回答是:如果解析失败,Int32.Parse(source)总会抛出异常;Convert.ToInt32(source)在source为null的情况下不会抛出异常而是简单的返回0给调用方;而Int32.TryParse(source,result)则无论如何都不抛出异常,只会返回true或false来说明解析是否成功,如果解析失败,调用方将会得到0值。Q:如果我要解析的字符串的字面数值不是十进制的话,那么从这些方法中得到的返回值是有问题的。有什么方法解决?A:那么你就需要这些方法的对应重载版本了,一个简单的方法是使用Convert类的publicstaticintToInt32(stringvalue,intfromBase);其中fromBase的值只能为2、8、10或者16,用于指定进制方式。如果fromBase不是指定的数值或者value不为十进制而又带有前缀正负号,就会抛出ArgumentException。stringsource="0x1412";//这里的0x(或0X)前缀是可选的。intresult=Convert.ToInt32(source,16);当然,你还可以通过为Int32类的publicstaticintParse(strings,NumberStylesstyle);指定NumberStyles.AllowHexSpecifier或者NumberStyles.HexNumber为第二个参数来解析十六进制字面值的字符串,此时,你需要引用System.Globalization命名空间。或者使用Int32类的publicstaticboolTryParse(strings,NumberStylesstyle,IFormatProviderprovider,outintresult);并指定NumberStyles.AllowHexSpecifier或者NumberStyles.HexNumber为第二个参数,null为第三个参数来解析十六进制字面值的字符串。你当然也应该引用System.Globalization命名空间。这里有一点要提醒的是,无论使用Parse或者TryParse方法来解析十六进制,字符串都不能出现0x或0X前缀,否则将会抛出异常。Q:如果我要把使用科学记数法表示的string转换为int又该如何呢?A:你可以通过把NumberStyles.AllowDecimalPoint|NumberStyles.AllowExponent(把两个NunberStyles枚举进行位运算,其中前者说明可能存在小数点,而后者则说明可能存在科学记数法的指数符号)作为第二个参数传递给Int32类的publicstaticintParse(strings,NumberStylesstyle);详细请看这里:
解决方案
解决方案二:
总结的不错哈~~接分!!!
解决方案三:
接分学习
解决方案四:
该回复于2008-03-31 09:50:18被版主删除
解决方案五:
学习
解决方案六:
jf
解决方案七:
mark
解决方案八:
学习
解决方案九:
up
解决方案十:
UP,UP
解决方案十一:
UP
解决方案十二:
总结的太好了!顶
解决方案十三:
UP
解决方案十四:
很不错的总结细节很重要的
解决方案十五:
支持楼主,谢谢。
解决方案:
顶
解决方案:
学习了
解决方案:
学习了顶
解决方案:
搞撒啊?????????
解决方案:
我一般使用result=Convert.ToInt32(source);
解决方案:
受教了
解决方案:
up........