2017-03-04 51 views
0

我有來自源的字符串,它是一個unicode數字數目是這樣的:如何將unicode字符串轉換爲C#中的int?

N = 117 => 117

現在我想這個字符串轉換爲int。但是當我嘗試使用Convert.ToInt我得到這個異常。 我該如何解決這個問題?

+1

也許ü應該看看這個 http://stackoverflow.com/questions/5879437/how-to-convert- arabic-number-to-int –

回答

1
Int32 value = 0; 
    if (Int32.TryParse(String.Join(String.Empty, "۱۱۷".Select(Char.GetNumericValue)), out value)) 
    { 
     Console.WriteLine(value); 
     //.... 
    } 
+0

這個解決方案是最短和最好的方法 –

+0

@ Navid_pdp11這裏不支持以'+'或'-'開頭的數字 – aloisdg

1

我們將使用方法GetNumericValue()將每個字符轉換爲數字。該文檔很明確:

將指定的數字Unicode字符轉換爲雙精度浮點數。

Demo

using System; 
using System.Linq; 

public class Program 
{ 
    public static void Main() 
    { 
     Console.WriteLine(ParseNumeric("۱۱۷")); 
    } 


    public static int ParseNumeric(string input) 
    { 
     return int.Parse(string.Concat(input.Select(c => 
      "+-".Contains(c) 
       ? c.ToString() 
       : char.GetNumericValue(c).ToString()))); 
    } 
} 

如果你想支持double,與double更換int和字符串中Contains()之前添加.

如果你喜歡使用TryParse替代基本Parse在這裏你去:

public static bool TryParseNumeric(string input, out int numeric) 
{ 
    return int.TryParse(string.Concat(input.Select(c => 
     "+-".Contains(c) 
      ? c.ToString() 
      : char.GetNumericValue(c).ToString())), out numeric); 
}