程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 如何把string解析為int?(1)

如何把string解析為int?(1)

編輯:關於C語言

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前綴,否則將會拋出異常。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved