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 を分割するために使用し、 double.Parsewith を使用し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 に答える