在.NET中将非ascii(unicode)数字字符串解析为整数

Jam*_*ack 11 .net unicode

我有一个包含非ascii格式的数字的字符串,例如unicode BENGALI DIGIT ONE(U + 09E7): "?"

如何在.NET中将其解析为整数?

注意:我尝试使用int.Parse()"bn-BD"作为IFormatProvider指定bengali文化格式.不行.

Jef*_*dge 5

您可以创建一个与旧字符串相同的新字符串,除了将原始数字替换为拉丁十进制数字.这可以通过循环遍历字符并检查值来可靠地完成char.IsDigit(char).如果此函数返回true,则将其转换为char.GetNumericValue(char).ToString().

像这样:

static class DigitHelper
{
    public static string ConvertNativeDigits(this string text)
    {
        if (text == null)
            return null;
        if (text.Length == 0)
            return string.Empty;
        StringBuilder sb = new StringBuilder();
        foreach (char character in text)
        {
            if (char.IsDigit(character))
                sb.Append(char.GetNumericValue(character));
            else
                sb.Append(character);
        }
        return sb.ToString();
    }
}


int value = int.Parse(bengaliNumber.ConvertNativeDigits());
Run Code Online (Sandbox Code Playgroud)