Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.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#_Windows_Windows Phone_Windows Phone 8.1_Globalization - Fatal编程技术网

C# 使用希伯来字母将数字转换为字符串

C# 使用希伯来字母将数字转换为字符串,c#,windows,windows-phone,windows-phone-8.1,globalization,C#,Windows,Windows Phone,Windows Phone 8.1,Globalization,这可能是一个简单的问题(甚至可能是一个骗局),但我找不到答案-如何用希伯来文字母打印数字 我已尝试更改应用程序语言和/或使用格式提供程序: myTextBox.Text = 555.ToString(new System.Globalization.CultureInfo("he-IL")); 但我找不到希伯来字母 在希伯来语中,我们使用与英语相同的数字。然而,希伯来字母可以表示数字。 对于א即1,ב为2,依此类推。但是当你到达י后,下一个字母是כ,但它代表20。所以11应该是י“א(这是用希

这可能是一个简单的问题(甚至可能是一个骗局),但我找不到答案-如何用希伯来文字母打印数字

我已尝试更改应用程序语言和/或使用格式提供程序:

myTextBox.Text = 555.ToString(new System.Globalization.CultureInfo("he-IL"));

但我找不到希伯来字母

在希伯来语中,我们使用与英语相同的数字。然而,希伯来字母可以表示数字。
对于
א
即1,
ב
为2,依此类推。但是当你到达
י
后,下一个字母是
כ
,但它代表20。所以11应该是
י“א
(这是用希伯来语写的,字母之间有标记)。
你的下一个字母是30,以此类推,直到你达到100,然后下一个字母是200,300,最后一个字母是400(
ת

整个希伯来语字母表是:
(请注意,希伯来文字母是从右到左书写的,这意味着
א
是第一行的第一个字母,
י
是第一行的最后一个字母)
(1比10)
(20比90)
קרשת(即100到400)

(有些空间字母的结尾形式不同,但它们的数字值与普通字母相同。例如,
ך
是书写字母
כ
的方法,如果它是单词的最后一个字母,但数字值仍然是20)

因此,数字600可以翻译为
שש
,或
ש
,或总和为600的任何字母组合。当然,如果你想把数字翻译成希伯来文,这可能会给你带来问题


我可能会选择最短的组合,所以测试可以递归使用的最大值字母,直到您可以将所有字母相加到请求的数字。

正如Zohar所说,在大多数用法中,希伯来语使用与英语相同的印阿数字。如果你真的想用希伯来字母写出一个数字,一个简单的方法是:

public static string FormatHebrew(this int num)
{
  if(num <= 0)
    throw new ArgumentOutOfRangeException();
  StringBuilder ret = new StringBuilder(new string ('ת', num / 400));
  num %= 400;
  if(num >= 100)
  {
    ret.Append("קרש"[num / 100 - 1]);
    num %= 100;
  }
  switch(num)
  {
    // Avoid letter combinations from the Tetragrammaton
    case 16:
      ret.Append("טז");
      break;
    case 15:
      ret.Append("טו");
      break;
    default:
      if (num >= 10)
      {
        ret.Append("כלמנסעפצי"[num / 10 - 1]);
        num %= 10;
      }
      if(num > 0)
        ret.Append ("אבגדהוזחט" [num - 1]);
        break;
  }
  return ret.ToString ();
}
publicstaticstringformathebrew(这个int-num)
{
如果(num=100)
{
ret.Append(“num/100-1”);
num%=100;
}
开关(num)
{
//避免使用四字母组合
案例16:
回复附加(“טז”);
打破
案例15:
回复附加(“טו”);
打破
违约:
如果(数值>=10)
{
ret.Append(“num/10-1”);
num%=10;
}
如果(数值>0)
ret.Append(“num-1”);
打破
}
返回ret.ToString();
}
(请确保文本编辑器正确处理字符串的顺序,主要是编译器看到的源代码的顺序是从低到高。一个好的文本编辑器会显示从右到左的顺序,就像希伯来语使用的顺序一样,但有些编辑器会显示相反的顺序)

公共静态字符串格式Hebrew(int num)引发异常{

    if (num <= 0 || num >= 6000)
        throw new Exception();
    StringBuilder ret = new StringBuilder();

    if (num >= 100) {
        if (num >= 1000 & num < 6000) {

            ret.append(let1000[num / 1000 - 1]);
            num %= 1000;
        }

        if (num < 500) {

            ret.append(let100[(num / 100) - 1]);

        } else if (num >= 500 && num < 900) {
            ret.append("ת");
            ret.append(let100[((num - 400) / 100) - 1]);
        } else if (num >= 900 && num < 1000) {
            ret.append("תת");
            ret.append(let100[((num - 800) / 100) - 1]);

        }

        num %= 100;
    }
    switch (num) {
    // Avoid letter combinations from the Tetragrammaton
    case 16:
        ret.append("טז");
        break;
    case 15:
        ret.append("טו");
        break;
    default:
        if (num >= 10) {

            ret.append(let10[(num / 10) - 1]);
            num %= 10;
        }
        if (num > 0) {

            ret.append(let1[num - 1]);
        }
        break;
    }
    return ret.toString();
}
if(num=6000)
抛出新异常();
StringBuilder ret=新的StringBuilder();
如果(数值>=100){
如果(数值>=1000&num<6000){
ret.append(let1000[num/1000-1]);
num%=1000;
}
如果(数量<500){
ret.append(let100[(num/100)-1]);
}否则如果(数值>=500&&num<900){
ret.append(“ת”);
ret.append(let100[((num-400)/100)-1]);
}否则如果(数值>=900&&num<1000){
ret.append(“תת”);
ret.append(let100[(num-800)/100)-1]);
}
num%=100;
}
开关(num){
//避免使用四字母组合
案例16:
回复附加(“טז”);
打破
案例15:
回复附加(“טו”);
打破
违约:
如果(数值>=10){
ret.append(let10[(num/10)-1]);
num%=10;
}
如果(数值>0){
ret.append(let1[num-1]);
}
打破
}
返回ret.toString();
}

您希望看到הנתתק抱歉第一句话-我对希伯来语一点也不熟悉,只是从中复制了符号。一旦我这样做了,文本框就开始不稳定,所以我无法完成评论。这就是你期望看到的吗?(符号是从左到右的,但很明显,我不知道这是否正确。我只是想澄清一下。是的,我刚刚改变了模拟器的语言,发现确实使用了与英语中相同的十进制字母。谢谢你提供希伯来数字如何工作的详细信息。好吧,如果你不能从犹太人那里得到这个,你从哪里能得到它是的,那是最好的消息来源。有趣的是,数字可以用几种不同的方式来表示。罗马数字也是如此,尽管人们倾向于尽可能简洁,但奇怪的是IIII在时钟面上往往比IV更受青睐。很好!但这并不能解释ט“ו”和ז“ז”。还有,在第一行,你的意思是:num@AYS关于支票开头的内容是正确的,谢谢。另一方面,你指的是避免击中弦内的四重奏吗?是的,我指的是这个。是的,既然重点是提供至少一种可能的传统编码方式,既然避免这两种组合是传统的一部分,我真的应该这样做,我会在早上编辑。看起来像个bug-字符串“•㪚סעפצי”应该是“ינססעפ”(yud-10-移动到字符串的开头)。当您想要将希伯来年份从数字转换为希伯来字母时,此代码非常适用
    if (num <= 0 || num >= 6000)
        throw new Exception();
    StringBuilder ret = new StringBuilder();

    if (num >= 100) {
        if (num >= 1000 & num < 6000) {

            ret.append(let1000[num / 1000 - 1]);
            num %= 1000;
        }

        if (num < 500) {

            ret.append(let100[(num / 100) - 1]);

        } else if (num >= 500 && num < 900) {
            ret.append("ת");
            ret.append(let100[((num - 400) / 100) - 1]);
        } else if (num >= 900 && num < 1000) {
            ret.append("תת");
            ret.append(let100[((num - 800) / 100) - 1]);

        }

        num %= 100;
    }
    switch (num) {
    // Avoid letter combinations from the Tetragrammaton
    case 16:
        ret.append("טז");
        break;
    case 15:
        ret.append("טו");
        break;
    default:
        if (num >= 10) {

            ret.append(let10[(num / 10) - 1]);
            num %= 10;
        }
        if (num > 0) {

            ret.append(let1[num - 1]);
        }
        break;
    }
    return ret.toString();
}