在我的 C# 应用程序中,我使用字符串作为
string sTemp = "10.12;12.13;15.345";
现在我想知道有什么方法可以根据当前语言环境格式化这个字符串及其内容(特别是当它们是数字时)。最终我希望我的 sTemp 应该是法语语言环境中的“10,12;12,13;15,345”。
是否可以?
在我的 C# 应用程序中,我使用字符串作为
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
用 with CultureInfo.InvariantCulture
解析输入和double.ToString
with 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
这对你有用。
但是,如果您将它与内容一起使用,那么您必须使用如何构建字符串内容来更新问题