C# 在C中使用CultureInfo对象的随机值#
我一直在查看以下链接 但我仍然不明白如何使用CultureInfo类(如“en”或“fr”)随机检索有效的2个字母的区域性值。。。。等等 请帮忙 谢谢 但我仍然不明白如何使用CultureInfo类(如“en”或“fr”)随机创建一个有效的2个字母的区域性值。。。。等等 你是说你想得到一个随机的文化?简单地说,并从该集合中获取一个随机元素。(您可以使用,但请注意。) 编辑:请注意,如果您只是想从一个已知的缩写中获取一个区域性,我建议使用而不是C# 在C中使用CultureInfo对象的随机值#,c#,cultureinfo,C#,Cultureinfo,我一直在查看以下链接 但我仍然不明白如何使用CultureInfo类(如“en”或“fr”)随机检索有效的2个字母的区域性值。。。。等等 请帮忙 谢谢 但我仍然不明白如何使用CultureInfo类(如“en”或“fr”)随机创建一个有效的2个字母的区域性值。。。。等等 你是说你想得到一个随机的文化?简单地说,并从该集合中获取一个随机元素。(您可以使用,但请注意。) 编辑:请注意,如果您只是想从一个已知的缩写中获取一个区域性,我建议使用而不是CultureInfo构造函数。这允许缓存,也给了你
CultureInfo
构造函数。这允许缓存,也给了你一个只读的文化,这几乎肯定是你想要的。(对只读数据进行推理更容易…(我不确定您想要这个的确切原因,但是…)您可以通过使用,然后从结果中随机选择来获得随机区域性:
var allCultures = CultureInfo.GetCultures(CultureTypes.AllCultures);
var random = new Random();
int index = random.Next(0, allCultures.Length);
var culture = allCultures[index];
string twoLetterCode = culture.TwoLetterISOLanguageName;
请注意,这并没有考虑到具有相同2个字母代码的区域性不是偶数。这将在所有文化中随机选取,但不是通过两个字母的代码平均选取。如果您想要更随机的分布,可以使用:
var uniqueCultureCodes = CultureInfo.GetCultures(CultureTypes.AllCultures)
.Select(c => c.TwoLetterISOLanguageName)
.Distinct()
.ToList();
var random = new Random();
int index = random.Next(0, uniqueCultureCodes.Count);
string twoLetterCode = uniqueCultureCodes[index];
这将创建两个字母代码的不同列表,然后从中随机选取
编辑:如果您的目标仅仅是创建一个
CultureInfo
给定一个两个字母的代码,如“en”或“fr”,您可以执行以下操作:
CultureInfo culture = new CultureInfo("en");
如果您不关心区域(
-
的最后一部分),则需要使用:
CultureInfo[] languages = CultureInfo.GetCultures(CultureTypes.NeutralCultures);
检索不同的语言。
如果您使用:
CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.AllCultures);
英语比德语有更大的变化(英语文化比德语文化多)。您是否尝试过
新文化信息(“en”)
?为什么要创建一个随机文化?为什么要“随机创建一个有效的两个字母的文化”?您在该网站上有完整的列表,这些列表都包含格式化数字、日期等信息。正确地说,为什么要创建一个新的列表?确实,请澄清:您想创建或检索区域性信息,是指随机(在运行时不确定地选择)还是任意选择(不知何故是你选择的,但在某种程度上,无论你选择什么,它都会起作用)?为什么我的问题被否决了?我尽我所能把它传达得尽可能清楚。我认为,OP提到“随机”时意味着“任意”.谢谢Jon..Reed提供了我想要的确切代码。我现在无法接受他的答案。@dotnet从业者:请阅读我答案中有关Random
问题的链接。不过:如果你快速连续多次调用Reed的代码,很可能会多次使用相同的文化。Jon..此时,我想我不是在寻找真正的随机性。但我感谢你的详细反馈。谢谢谢谢,这正是我想要的。它不会让我接受答案。@dotnet从业者会的-你只需要等一会儿,因为系统会确保其他人也能回答。这不是随机的,因为有更大的可能性获得的是英国文化而不是德国文化(几种“en XX”文化)。@SteenT不清楚哪种文化更好-我编辑以提供两种选择。最初选择了一种随机文化,然后提供了两个字母代码,我的编辑显示从可用的两个字母代码中随机选择。