有没有一种方法可以将字符串尝试解析为System.Globalization.CultureInfo?

7

在C#中,我正在使用

CultureInfo.GetCultureInfo(myCulture)

但是字符串变量可能不符合良好的格式,有没有一种方法可以先尝试解析字符串或先验证它。


2
tryParse what ? to int - Habib
2
@Habib 在标题中提到,他想将一个 string 解析为 CultureInfo - Uwe Keim
@UweKeim,现在看到答案,问题变得更加清晰了。 - Habib
3个回答

11
以下代码将返回所有文化集合:
CultureInfo.GetCultures(CultureTypes.AllCultures)

接下来,您可以使用以下方法来替代GetCultureInfo

.FirstOrDefault(c => c.Name == myCulture)

与其使用AllCultures,你可能想要筛选出SpecificCultures


如果您经常这样做,甚至可以在 Dictionary<,> 中获取所有文化。例如:static readonly Dictionary<string, CultureInfo> CultureDict = CultureInfo.GetCultures(CultureTypes.AllCultures).ToDictionary(c => c.Name); - Jeppe Stig Nielsen

-1

没有使用Culture对象的TryParse方法。一种方法是按建议遍历所有Culture,查找其中一个;另一种方法是使用简单的TryParse方法:

try
{
    // making sure the lang is a calture
    System.Globalization.CultureInfo c = new System.Globalization.CultureInfo(lang);
}
catch
{
    lang = Session["lang"].ToString();
}

你绝对不能做这样的事情!将catch改为catch(CultureNotFoundException ex) - Peter

-3

我在我的项目中总是使用一个小助手。所有算术类型都有TryParse方法。

public static bool TryParseDouble(this string text, out double value)
{
   return double.TryParse(text, NumberStyles.Any,
                          CultureInfo.InvariantCulture, out value);
}

使用方法

double value;
bool isStringOK = theString.TryParseDouble(out value);

1
那么,原帖中问到的doubleCultureInfo有什么关系呢? - Uwe Keim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接