【问题标题】:How to convert unicode string to int in C#?如何在 C# 中将 unicode 字符串转换为 int?
【发布时间】:2017-03-04 13:59:31
【问题描述】:

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

n = 117 => 117

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

【问题讨论】:

标签: c# .net unicode


【解决方案1】:
    Int32 value = 0;
    if (Int32.TryParse(String.Join(String.Empty, "۱۱۷".Select(Char.GetNumericValue)), out value))
    {
        Console.WriteLine(value);
        //....
    }

【讨论】:

  • 这个解决方案是最短最好的方法
  • @Navid_pdp11 此处不支持以+- 开头的数字
【解决方案2】:

我们将使用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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-23
    • 2020-07-03
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    • 2011-07-11
    • 2013-05-23
    • 1970-01-01
    相关资源
    最近更新 更多