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

问题描述 投票:2回答:3

这可能很容易(甚至可能是一个骗子),但我找不到答案-如何使用希伯来字母打印数字?

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

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

但是我收不到希伯来字母。

c# windows windows-phone windows-phone-8.1 globalization
3个回答
4
投票

在希伯来语中,我们使用与英语相同的数字。但是,希伯来字母可以表示数字。对于א为1,ב为2,依此类推。但是,当到达י为10后,下一个字母为כ,但代表20。因此11为י"א。 (这是用希伯来语书写的方式,字母之间带有“”标记)。您的下一个字母将是30,依此类推,直到您达到100,然后下一个字母是200、300,最后一个字母是400(ת)。

整个希伯来语字母是:(请注意,希伯来语字母是从右到左写的,这意味着א是第一行的最后一个,י是第一行的最后一个)אבגדהוזחטי(1到10)כלמנסעפצ(20到90)קרשת(100到400)

(有些空格字母以不同的形式结尾一个单词,但是它们具有与常规字母相同的数值。例如,如果ך是字母的最后一个字母,则是כ的写法一个单词,但数值仍然是20)

因此,数字600可能会转换为שש"שש"ת,或将总计为600的字母的任何组合。当然,如果要将数字转换为希伯来字母,这可能会对您造成问题。

我可能会选择最短的组合,所以请测试可以递归使用的最高价值的字母,直到可以将所有必须的字母加到请求的数字上为止。


4
投票

如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 ();
}

(请确保您的文本编辑器正确处理了字符串的顺序,主要是编译器所看到的源代码按从低到高的顺序排列它们。一个好的文本编辑器将把它显示为正确的-至左,因为这是希伯来语使用的顺序,但有些人会显示出相反的顺序。]


0
投票

296 407 395 401 401 86203913177 451 140 100 334 17 19 411 420 30225395257951401007287617 30 211 451 86 217 207 31 206317 333 68 217 62 86 52272 31 75 301 364 36 237 8613 56 302 3186 31 95 428 380 25 8625752385401863861209068501 95 74 410 845 501 95 68390480 85317 40 31410140360 56 302 31 272

© www.soinside.com 2019 - 2024. All rights reserved.