我用一个按钮创建了一个简单的窗口应用程序
\n\npublic partial class Form1 : Form\n{\n public Form1()\n {\n InitializeComponent();\n }\n\n private void button1_Click(object sender, EventArgs e)\n {\n MessageBox.Show(CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol);\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n看来 CultureInfo.CurrentCulture 在运行时不会改变。谁能给我提供其他变量来获取当前的窗口货币格式
\n如果我有一个CultureInfo
实例,是否有任何简单的方法(内置、通过框架或通过操作系统)来获取与该文化相匹配的“标志”图标?这将避免创建单独的查找。
我在的文档CultureInfo
中找不到完成这项工作的成员函数,但也许还有一些其他不太费力的方法涉及我尚未找到的其他 .NET 类。
对我来说,在 Convert 类中进行以下重载是有意义的
public static double ToDouble(string value, IFormatProvider provider);
Run Code Online (Sandbox Code Playgroud)
例子:
Console.WriteLine(Convert.ToDouble("3223.2", CultureInfo.InvariantCulture)); // success
Console.WriteLine(Convert.ToDouble("3223,2", new CultureInfo("fr-FR"))); // success
Console.WriteLine(Convert.ToDouble("3223.2", new CultureInfo("fr-FR"))); // failure
Run Code Online (Sandbox Code Playgroud)
但是使用以下重载的示例是什么?
public static int ToInt32(string value, IFormatProvider provider);
Run Code Online (Sandbox Code Playgroud)
下面一切都失败了:
Console.WriteLine(Convert.ToInt32("3223.2", CultureInfo.InvariantCulture));
Console.WriteLine(Convert.ToInt32("3223,2", new CultureInfo("fr-FR")));
Console.WriteLine(Convert.ToInt32("3223.2", new CultureInfo("fr-FR")));
Run Code Online (Sandbox Code Playgroud)
换句话说,是否存在任何有效的整数字符串表示形式(在任何区域性中),如果不指定 IFormatProvider 就无法将其转换为 int?
我想知道我的应用程序在哪里使用。
这是获取国家/地区名称和时区的代码:
TimeZone localZone = TimeZone.CurrentTimeZone;
var result = localZone.StandardName;
var s = result.Split(' ');
Console.WriteLine(s[0]);
Console.WriteLine(RegionInfo.CurrentRegion.DisplayName);
Run Code Online (Sandbox Code Playgroud)
但我的问题是,任何人都可以更改时区。根据时区,我可能会得到错误的名字。并且区域设置为美国,无法更改。因为所有用户都有相同的设置,并且我的应用程序有数十万用户。
有什么方法可以读取任何操作系统设置/系统设置并获取使用我的应用程序的当前国家/地区?
给定一个CultureInfo
对象,如何获取两个字符的 ISO 3166 国家/地区代码?例如en-US
,来自,我想要US
和来自en-GB
,我想要GB
。我还需要处理文化可能没有国家/地区代码的情况。
有什么方法可以在不运行应用程序的情况下确定PC的本地文化(例如en-US)?我尝试在“控制面板”中查找| 区域设置(运行WinXP),但是我不知道那里的选择如何映射到PC的文化。
我正在寻找不需要创建.exe的解决方案,例如从命令提示符(不是PowerShell)运行命令,或者运行VbScript或JS文件(只要我们了解的是真正的文化,而不是IE)设置。)
谢谢
如何以美元文化格式显示货币价值,如$ 5,123,456.55.我知道我可以使用ToString方法做但不知道怎么做?
在我的应用程序(MVC3)中,我将文化信息列表绑定到下拉列表,并根据选择我已将数据库中的LCID值存储.现在我想使用LCID获取Culture,我如何获得使用LCID值?
我正在阅读C#中的字符串比较,我想知道:
我可以预定义进程/线程级别的比较信息不区分大小写,所以我可以==
在比较两个字符串时直接使用吗?
我正在使用下面的代码将字符串转换为datetime(使用选定的语言).它适用于除阿拉伯语之外的所有其他语言.当传递ar作为CultureInfo时,它会抛出错误"字符串未被识别为有效的DateTime".它的原因是什么?
CultureInfo ci = new CultureInfo("ar"); //works well for en,de,fr,hi,ru
string mDate = "2018-07-15 17:00";
DateTime userTime = Convert.ToDateTime(mDate,ci);
Run Code Online (Sandbox Code Playgroud) cultureinfo ×10
c# ×6
.net ×5
culture ×2
localization ×2
.net-core ×1
asp.net ×1
asp.net-mvc ×1
datetime ×1
formatting ×1
iso-3166 ×1
regioninfo ×1
string ×1
uwp ×1