我有String.Format的问题.除了第一个整数之外,以下代码正确格式化了字符串.目前的文化被定为伊拉克阿拉伯语(ar-IQ):
int currentItem= 1;
string of= "??";
int count = 2;
string formatted = string.Format(CultureInfo.CurrentCulture, "{0}{1}{2}", currentItem, of, count);
Run Code Online (Sandbox Code Playgroud)
文本从右到左格式化,2转换为阿拉伯数字,但1不是.
有任何想法吗?
在我正在编写的应用程序中,我想用英语显示当前日期和时间,但也要在其他语言环境中显示.
例如俄语,阿拉伯语和中文.
// DateTime.ToLongDateString doesn't support a IFormatProvider parameter
DateTime.Now.ToString("dddd, d MMMM, yyyy", new CultureInfo("en-US"));
// "Wednesday, 7 August, 2013"
DateTime.Now.ToString("dddd, d MMMM, yyyy 'r.'", new CultureInfo("ru-RU"));
// "?????, 7 ???????, 2013 r."
Run Code Online (Sandbox Code Playgroud)
工作良好...
DateTime.Now.ToString("dddd? d MMM? yyyy", new CultureInfo("ar"));
// "????????? 30 ?????? 1434"
Run Code Online (Sandbox Code Playgroud)
似乎工作正常.
但是......我想将数字显示为(东方)阿拉伯数字,而不是拉丁文/阿拉伯数字.虽然这当然可以通过简单的替换('0'到'0',1到'1'等)来解决.
但后来有中文:
DateTime.Now.ToString("yyyy?M?d?dddd", new CultureInfo("zh-CN"))
// "2013?8?7????"
Run Code Online (Sandbox Code Playgroud)
中文数字似乎比仅仅做一个简单的替换要复杂得多; 有时一个字符变成2.在那旁边,格式化的日期似乎显示当前的格里高利日期,而不是当前的中国日期.
所以我的问题是:
A).NET/C#中是否有任何本地化功能可以在其他数字系统中显示数字(特别是日期)?
B)我可以强制.NET/C#在中文(可能还有日文和其他)日历中显示日期,因为它似乎与阿拉伯语日历有关吗?
这可能是一个简单的问题(甚至可能是一个骗局),但我找不到这个问题的答案 - 如何使用希伯来字母打印数字?
我尝试更改应用程序语言和/或使用格式提供程序:
myTextBox.Text = 555.ToString(new System.Globalization.CultureInfo("he-IL"));
Run Code Online (Sandbox Code Playgroud)
但我看不到希伯来字母。