0

在我的 C# 应用程序中,我使用字符串作为

string sTemp = "10.12;12.13;15.345";

现在我想知道有什么方法可以根据当前语言环境格式化这个字符串及其内容(特别是当它们是数字时)。最终我希望我的 sTemp 应该是法语语言环境中的“10,12;12,13;15,345”。

是否可以?

4

3 回答 3

2
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);
于 2013-01-03T10:31:10.900 回答
1

用于String.Split(';')拆分字符串双精度,double.Parse用 with CultureInfo.InvariantCulture解析输入和double.ToStringwith 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);

演示

于 2013-01-03T10:31:07.577 回答
0

我猜您正在使用带有在这种情况下声明的内容的字符串,您需要对其进行格式化

例子

// 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这对你有用。

但是,如果您将它与内容一起使用,那么您必须使用如何构建字符串内容来更新问题

于 2013-01-03T10:34:57.263 回答