我有一个来自某个源的字符串,这是一个像这样的unicode数字:
n = 117 => 117
现在我想将此字符串转换为int。但是当我尝试使用 Convert.ToInt 时,我得到了这个例外。 我该如何解决这个问题?
答案 0 :(得分:1)
Int32 value = 0;
if (Int32.TryParse(String.Join(String.Empty, "۱۱۷".Select(Char.GetNumericValue)), out value))
{
Console.WriteLine(value);
//....
}
答案 1 :(得分:1)
我们将使用方法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
,请将int
替换为double
,并在.
之前的字符串中添加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);
}