-1

私は次のリンクを確認しています

http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo%28v=vs.71%29.aspx

しかし、「en」や「fr」などのCultureInfoクラスを使用して、有効な2文字のカルチャ値をランダムに取得する方法がまだわかりません。

助けてください。

ありがとう

4

3 に答える 3

4

(なぜこれが必要なのか正確にはわかりませんが...)CultureInfo.GetCulturesを使用してランダムなカルチャを取得し、結果からランダムに選択することができます。

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文字のコードを持つ文化が偶数ではないことを考慮していないことに注意してください。これにより、すべてのカルチャの中からランダムに選択されますが、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];

これにより、2つの文字コードの個別のリストが作成され、それらからランダムに選択されます。


編集:目標が単にCultureInfo「en」や「fr」などの特定の2文字のコードを作成することである場合は、次のことができます。

CultureInfo culture = new CultureInfo("en");
于 2012-08-01T16:34:52.497 に答える
1

しかし、「en」や「fr」などのCultureInfoクラスを使用して、有効な2文字のカルチャ値をランダムに作成する方法がまだわかりません。

ランダムな文化を手に入れたいということですか?有効なカルチャをすべて取得し、そのコレクションからランダムな要素を取得するだけです。(を使用できますが、処理する必要System.Randomのあるさまざまな問題に注意してください。)

編集:既知の略語から単一のカルチャを取得しようとしている場合、コンストラクターCultureInfo.GetCultureInfoの代わりに使用することをお勧めします。CultureInfoこれにより、キャッシュが可能になり、ほぼ確実に必要な読み取り専用のカルチャが提供されます。(読み取り専用データについて推論する方が簡単です...)

于 2012-08-01T16:33:57.677 に答える
1

地域(の最後の部分<language>-<region>)を気にしない場合は、次を使用することをお勧めします。

CultureInfo[] languages = CultureInfo.GetCultures(CultureTypes.NeutralCultures);

さまざまな言語を取得します。使用する場合:

CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.AllCultures);

ドイツ語よりも英語を習得することの大きな変化があります(ドイツ語よりも多くの英語文化)。

于 2012-08-01T16:44:22.847 に答える