根据当前语言环境进行字符串格式化

本文关键字:字符串 格式化 环境 语言 | 更新日期: 2023-09-27 17:50:36

在我的c#应用程序中,我使用string作为

string sTemp = "10.12;12.13;15.345";

现在我想知道是否有任何方法我可以格式化这个字符串和它的内容(特别是当它们是数字时)按照当前语言环境。最后,我希望我的sTemp应该是- "10,12;12,13;15,345"在法语地区。

有可能吗?

根据当前语言环境进行字符串格式化

string sTemp = "10.12;12.13;15.345";
string[] splitted = sTemp.Split(';');
IEnumerable<float> floats = splitted.Select(s => float.Parse(s, System.Globalization.CultureInfo.InvariantCulture));
string localized = floats.Select(f => f.ToString()).Aggregate((current, next) => current + ";" + next);

使用String.Split(';')拆分双字串,double.Parse使用CultureInfo.InvariantCulture解析输入,double.ToString使用CultureInfo.CurrentCulture(或"fr-FR")解析输出:

string sTemp = "10.12;12.13;15.345";
var doubles = sTemp.Split(';')
    .Select(s => double.Parse(s, CultureInfo.InvariantCulture));
var locale = System.Globalization.CultureInfo.CreateSpecificCulture("fr-FR");
// or var locale = System.Globalization.CultureInfo.CurrentCulture;
var localeDoubleStrings = doubles.Select(d => d.ToString(locale));
foreach(string frDoubleStr in localeDoubleStrings)
    Console.WriteLine(frDoubleStr);

我猜你使用的是声明内容的字符串那么你需要对它进行格式化

例子
// this would be as per french culture
Console.WriteLine(string.Format(new CultureInfo("Fr-fr"), "{0};{1};{2};", 10.2, 15.6, 25.3));
// this would be invariant
Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "{0};{1};{2};", 10.2, 15.6, 25.3));

所以你只需要输入CultureInfo.CurrentCulture就可以了。

但是如果你在内容中使用它那么你就需要更新问题你是如何构建字符串content