我有來自源的字符串,它是一個unicode數字數目是這樣的:如何將unicode字符串轉換爲C#中的int?
N = 117 => 117
現在我想這個字符串轉換爲int。但是當我嘗試使用Convert.ToInt我得到這個異常。 我該如何解決這個問題?
我有來自源的字符串,它是一個unicode數字數目是這樣的:如何將unicode字符串轉換爲C#中的int?
N = 117 => 117
現在我想這個字符串轉換爲int。但是當我嘗試使用Convert.ToInt我得到這個異常。 我該如何解決這個問題?
Int32 value = 0;
if (Int32.TryParse(String.Join(String.Empty, "۱۱۷".Select(Char.GetNumericValue)), out value))
{
Console.WriteLine(value);
//....
}
這個解決方案是最短和最好的方法 –
@ Navid_pdp11這裏不支持以'+'或'-'開頭的數字 – aloisdg
我們將使用方法GetNumericValue()
將每個字符轉換爲數字。該文檔很明確:
將指定的數字Unicode字符轉換爲雙精度浮點數。
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);
}
也許ü應該看看這個 http://stackoverflow.com/questions/5879437/how-to-convert- arabic-number-to-int –