如何把string解析为int?

Q:如何把string解析为int?

A:简单的方法有三种:

string source = "1412";
int result = 0;

// 使用Convert.ToInt32(string value);
result = Convert.ToInt32(source);

// 使用Int32.Parse(string value);
result = Int32.Parse(source);

// 使用Int32.TryParse(string s, out int result);
Int32.TryParse(source, out result);

Q:这三种方法有什么不同?

A:一个简单的回答是:

如果解析失败,Int32.Parse(source)总会抛出异常;Convert.ToInt32(source)在source为null的情况下不会抛出异常而是简单的返回0给调用方;而Int32.TryParse(source, result)则无论如何都不抛出异常,只会返回true或false来说明解析是否成功,如果解析失败,调用方将会得到0值。

Q:如果我要解析的字符串的字面数值不是十进制的话,那么从这些方法中得到的返回值是有问题的。有什么方法解决?

A:那么你就需要这些方法的对应重载版本了,一个简单的方法是使用Convert类的

public static int ToInt32(string value, int fromBase);

其中fromBase的值只能为2、8、10或者16,用于指定进制方式。如果fromBase不是指定的数值或者value不为十进制而又带有前缀正负号,就会抛出ArgumentException。

string source = "0x1412"; // 这里的0x(或0X)前缀是可选的。

int result = Convert.ToInt32(source, 16);

当然,你还可以通过为Int32类的

public static int Parse(string s, NumberStyles style);

指定NumberStyles.AllowHexSpecifier或者NumberStyles.HexNumber为第二个参数来解析十六进制字面值的字符串,此时,你需要引用System.Globalization命名空间。

或者使用Int32类的

public static bool TryParse(string s, NumberStyles style, IFormatProvider provider, out int result);

并指定NumberStyles.AllowHexSpecifier或者NumberStyles.HexNumber为第二个参数,null为第三个参数来解析十六进制字面值的字符串。你当然也应该引用System.Globalization命名空间。

这里有一点要提醒的是,无论使用Parse或者TryParse方法来解析十六进制,字符串都不能出现0x或0X前缀,否则将会抛出异常。

时间: 2024-09-16 07:32:14

如何把string解析为int?的相关文章

如何把string解析为int?

问题描述 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(sou

C#,int转成string,string转成int

1,int转成string用toString 或者Convert.toString()如下  例如:int varInt = 1; string varString = Convert.ToString(varInt); string varString2 = varInt.ToString(); 2,string转成int如果确定字符串中是可以转成数字的字符,可以用int.Parse(string s),该语句返回的是转换得到的int值;如果不能确定字符串是否可以转成数字,可以用int.Try

queryforlist模糊查询-JdbcTemplet中的queryForList(String sql,Object[],int[])如何进行模糊查询

问题描述 JdbcTemplet中的queryForList(String sql,Object[],int[])如何进行模糊查询 这是代码: Object[] params = new Object[]{searchValue}; int[] types = new int[]{Types.VARCHAR}; String sql = "SELECT * FROM T_BILL_INFORMATION tbi WHERE tbi.name like '%'+?+'%'"; getJd

将string解析为json的几种方式小结_javascript技巧

1.比较古老的方法: 复制代码 代码如下: function strToJson(str){ var json = eval('(' + str + ')'); return json; } 2.比较常用的方法: 复制代码 代码如下: function strToJson(str){ return (new Function("return " + str))(); } 3.IE67不支持的json对象方法: 复制代码 代码如下: function strToJson(str){ re

深入解析unsigned int 和 int_C 语言

就如同int a:一样,int 也能被其它的修饰符修饰.除void类型外,基本数据类型之前都可以加各种类型修饰符,类型修饰符有如下四种:1.signed----有符号,可修饰char.int.Int是默认有符号的.2.unsigned-----无符号,修饰int .char3.long------长型,修饰int .double4.short------短型,修饰int 我们主要来看一下signed和unsigned与int之间的联系与区别.什么叫做有符号,什么叫做无符号这个问题其实很简单,比如

C#优化字符串操作(经验之谈)

1.Convert.ToInt32与Int32.Parse的恩恩怨怨 2.Split的3种用法 3.@"abc"和"abc"区别在那里 4.保留2位有效小数及四舍五入 5.url传递中文的解决方案 6.把123456789转换为12-345-6789的3种方法 7.交换两个指定位置字符的4种方法 8."%10"的妙用 9.输出21个AAAAAAAAAAAAAAAAAAAAA的巧妙做法 1.Convert.ToInt32与Int32.Parse的恩

java String字符串解析实例整理

字符串解析类  代码如下 复制代码 StringTokenizer tokenizer = new StringTokenizer(number, ",");         boolean bool = true;         while (tokenizer.hasMoreTokens()) {             try {                 Double.valueOf(tokenizer.nextToken());             } catch

c#中int 转string 16进制和16转double的方法

0x开头的16进制没有负数和小数 #region change hex to double private Double HexConverToDouble(string hexString) { if (hexString == "") { return 0; } string data; if (hexString.StartsWith("0x")) { data = hexString.Substring(2); } else { data = hexStri

C++中实现string类型转换int类型

C语言转换形式: ... std::string str; int i = atoi(str.c_str()); ... C++转换形式(C++11): ... std::string str; int i = std::stoi(str); ... 同样, 可以使用 stol(long), stof(float), stod(double) 等. 更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/cplus/ 以上是