如何在C#中将unicode字符串转换为int?

时间:2017-03-04 13:59:32

标签: c# .net unicode

我有一个来自某个源的字符串,这是一个像这样的unicode数字:

  

n = 117 => 117

现在我想将此字符串转换为int。但是当我尝试使用 Convert.ToInt 时,我得到了这个例外。 我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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,请将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);
}
相关问题