J'ai une chaîne qui contient une valeur numérique dans une culture (par exemple, la chaîne est "$ 1000.00" et la culture est "en"). Je veux convertir cette chaîne en une chaîne dans l'autre culture tout en préservant autant d'informations sur le format original que possible. Par exemple:Convertir une chaîne contenant une valeur numérique dans la même chaîne avec différents paramètres de culture tout en préservant le format original
"$ 1000.00"
dans "en" culture =>"1 000,00 $"
dans "ru" culture.
J'ai essayé l'approche la plus évidente:
private static bool TryConvertNumberString(IFormatProvider fromFormat, IFormatProvider toFormat, string number, out string result)
{
double numericResult;
if (!double.TryParse(number, NumberStyles.Any, fromFormat, out numericResult))
{
result = null;
return false;
}
result = numericResult.ToString(toFormat);
return true;
}
Mais cela ne fonctionne pas comme je le veux à: Double.TryParse « mange » toutes les informations sur la présence de signes de change, chiffres décimaux, etc donc, si je tente d'utiliser cette méthode comme ceci:
string result;
TryConvertNumberString(new CultureInfo("en"), new CultureInfo("ru"), "$ 1000.00", out result);
Console.WriteLine(result);
Je vais juste 1000
, pas "1 000,00 $"
.
Y at-il un moyen facile d'obtenir ce comportement en utilisant .NET?