Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将印地语数字(२;०;७;४;)转换为c中的数值?_C#_Hindi_Devanagari - Fatal编程技术网

C# 如何将印地语数字(२;०;७;४;)转换为c中的数值?

C# 如何将印地语数字(२;०;७;४;)转换为c中的数值?,c#,hindi,devanagari,C#,Hindi,Devanagari,我有一大群印地语数字,我想把它们转换成数值,但我不知道如何转换它们。请建议我实现这一目标的适当方法。 注意请不要建议我更换方法 把这个数字换算成数字२०७४ 相当于2074年 我相信这就是你想要的,但是请注意,这段代码是由不会说印地语、不会读印地语或不懂印地语的人编写的 我找到了上面的数字,但我完全不知道我在做什么 谷歌页面(我通过搜索问题中原始字符串中的各个数字找到)似乎表明了以下几点: 0-9的数字为०१२३४५६७८९ 我点击了一个链接,用url的最后一个字符作为数字 请注意,必须将4

我有一大群印地语数字,我想把它们转换成数值,但我不知道如何转换它们。请建议我实现这一目标的适当方法。 注意请不要建议我更换方法


把这个数字换算成数字२०७४ 相当于2074年

我相信这就是你想要的,但是请注意,这段代码是由不会说印地语、不会读印地语或不懂印地语的人编写的

我找到了上面的数字,但我完全不知道我在做什么

谷歌页面(我通过搜索问题中原始字符串中的各个数字找到)似乎表明了以下几点:

  • 0-9的数字为
    ०१२३४५६७८९
    
    • 我点击了一个链接,用url的最后一个字符作为数字
    • 请注意,必须将4作为14的第二个数字,并且该链接上似乎还有一个消歧后缀
  • 它们的unicode代码点按顺序从2406到2415不等
  • 两位数数字跟随系统到达一个T形三通,因此它似乎只是一个使用不同代码点的10位数数字系统
    • 但请注意,对于我来说,例子太少了,我无法绝对肯定这对所有数字都适用
如果有人在这个答案上捅了个洞,我会把它取下来,但如果你认为可以改进的话,可以先从中获取所有的代码

还要记住,OP明确要求使用非替换方法。整件事可能都可以用一行写出来,但既然这似乎不是一个可以接受的答案,那么我们就来了

综上所述,这里有一个非字符串替换版本,它模仿使用不同符号的基本数字解析:

注意:这里没有大约7吨的错误处理,例如空字符串等

public static bool TryParseHindiToInt32(string text, out int value)
{
    const int codePointForZero = 2406;
    const int codePointForNine = codePointForZero + 9;

    int sign = +1;

    int index = 0;
    if (index < text.Length && text[index] == '-') // todo: hindi minus?
    {
        index++;
        sign = -1;
    }

    value = 0;
    while (index < text.Length)
    {
        char c = text[index];
        if (c < codePointForZero || c > codePointForNine)
        {
            value = 0;
            return false;
        }

        if ((uint)value > 214748364u)
        {
            value = 0;
            return false;
        }

        value *= 10;
        value += (c - codePointForZero);
        index++;
    }

    value *= sign;
    return true;
}
产出:

2074

我相信这正是您所追求的,但请注意,此代码是由不会说印地语、不会读印地语或不懂印地语的人编写的

我找到了上面的数字,但我完全不知道我在做什么

谷歌页面(我通过搜索问题中原始字符串中的各个数字找到)似乎表明了以下几点:

  • 0-9的数字为
    ०१२३४५६७८९
    
    • 我点击了一个链接,用url的最后一个字符作为数字
    • 请注意,必须将4作为14的第二个数字,并且该链接上似乎还有一个消歧后缀
  • 它们的unicode代码点按顺序从2406到2415不等
  • 两位数数字跟随系统到达一个T形三通,因此它似乎只是一个使用不同代码点的10位数数字系统
    • 但请注意,对于我来说,例子太少了,我无法绝对肯定这对所有数字都适用
如果有人在这个答案上捅了个洞,我会把它取下来,但如果你认为可以改进的话,可以先从中获取所有的代码

还要记住,OP明确要求使用非替换方法。整件事可能都可以用一行写出来,但既然这似乎不是一个可以接受的答案,那么我们就来了

综上所述,这里有一个非字符串替换版本,它模仿使用不同符号的基本数字解析:

注意:这里没有大约7吨的错误处理,例如空字符串等

public static bool TryParseHindiToInt32(string text, out int value)
{
    const int codePointForZero = 2406;
    const int codePointForNine = codePointForZero + 9;

    int sign = +1;

    int index = 0;
    if (index < text.Length && text[index] == '-') // todo: hindi minus?
    {
        index++;
        sign = -1;
    }

    value = 0;
    while (index < text.Length)
    {
        char c = text[index];
        if (c < codePointForZero || c > codePointForNine)
        {
            value = 0;
            return false;
        }

        if ((uint)value > 214748364u)
        {
            value = 0;
            return false;
        }

        value *= 10;
        value += (c - codePointForZero);
        index++;
    }

    value *= sign;
    return true;
}
产出:

2074

请不要建议我更换方法。那么你期待什么呢?如果我们不替换它们,我们将如何转换它们?您是否尝试过设置印地语文化,然后设置
int.Parse
?实际上我事先不知道数字是多少,所以我希望通用解决方案能够实现这一点。你能解释一下你是怎么做到的吗?这些字符只是0-9的不同符号吗?意思是,你能用一个简单的替代品吗?或者它是一个完全不同的数字系统?你需要告诉我们为什么你不能使用“替换方法”,因为这似乎是非常简单的。根据上面显示的数字表,它们似乎只是
0-9
的不同符号。请不要建议我替换方法。那么你期待什么呢?如果我们不替换它们,我们将如何转换它们?您是否尝试过设置印地语文化,然后设置
int.Parse
?实际上我事先不知道数字是多少,所以我希望通用解决方案能够实现这一点。你能解释一下你是怎么做到的吗?这些字符只是0-9的不同符号吗?意思是,你能用一个简单的替代品吗?或者它是一个完全不同的数字系统?你需要告诉我们为什么你不能使用“替换方法”,因为这似乎是非常简单的。根据这张表格显示的数字,似乎它们只是
0-9
的不同符号。谢谢你的回复,谢谢你回复我