这可能是一个简单的(它甚至可能是一个傻瓜),但我找不到答案 - 如何使用希伯来字母打印数字?
我尝试更改应用语言和/或使用格式提供程序:
myTextBox.Text = 555.ToString(new System.Globalization.CultureInfo("he-IL"));
但我无法收到希伯来文字母。
答案 0 :(得分:4)
在希伯来语中,我们使用与英语相同的数字。但是,希伯来字母可以表示数字
如果א
为1,则ב
为2,依此类推。但是当你到达י
10后,下一个字母是כ
,但它代表20.所以11将是י"א
。 (这是用希伯来语写的方式,用“字母之间的标记”)
你的下一个字母是30,依此类推,直到你得到100,然后下一个是200,300,最后一个字母是400(ת
)。
内含希伯来字母是:
(请注意,希伯来字母是从右到左书写的,这意味着א
是第一行而י
是第一行中的最后一行)
אבגדהוזחטי(1到10)
כלמנסעפ((20至90)
קרשת(100至400)
(有一些空格字母用不同的形式来结束一个单词,但它们与常规字母具有相同的数值。例如,ך
是写字母כ
的方式。这是一个单词的最后一个字母,但数字值仍为20)
因此,数字600可能会转换为שש"ש
或ש"ת
,或任何总和为600的字母组合。当然,如果您愿意,这可能会对您造成问题将数字翻译成希伯来字母。
我可能会选择最短的组合,因此请测试可以递归使用的最高值字母,直到您可以将所有字母与所请求的数字相加。
答案 1 :(得分:4)
正如佐哈所说,在大多数用途中,希伯来语使用与英语相同的印度 - 阿拉伯数字。如果你真的想用希伯来字母写出一个数字,一个简单的方法是:
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 ();
}
(确保您的文本编辑器正确处理字符串的排序,主要是编译器看到的源代码具有从低到高的顺序。一个好的文本编辑器将显示为从右到左,希伯来语使用的顺序,但是有些人会从中反过来表示。)
答案 2 :(得分:0)
static String[] let1000 = { " א'", " ב'", " ג'", " ד'", " ה'" };
static String[] let100 = { "ק", "ר", "ש", "ת" };
static String[] let10 = { "י", "כ", "ל", "מ", "נ", "ס", "ע", "פ", "צ" };
static String[] let1 = { "א", "ב", "ג", "ד", "ה", "ו", "ז", "ח", "ט" };
公共静态字符串FormatHebrew(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();
}