Как заменить разделитель точек запятой (для десятичных дробей) и разделитель запятых точкой (для групп) в c#? - PullRequest
0 голосов
/ 03 марта 2020

Если у меня есть строка «1 234 567,89», и я хочу получить «1,234,567,89», какой самый простой способ сделать это в c#?

Ответы [ 5 ]

2 голосов
/ 03 марта 2020

Вы можете использовать CultureInfo.NumberFormat для этой цели.

var str = "1,234,567.89";
var ci = CultureInfo.InvariantCulture.Clone() as CultureInfo;
ci.NumberFormat.NumberDecimalSeparator = ",";
ci.NumberFormat.NumberGroupSeparator  = ".";
ci.NumberFormat.NumberGroupSizes = new[]{3};
var result = decimal.Parse(str).ToString("N",ci); 

1 голос
/ 03 марта 2020

Самый простой способ с использованием фиктивного символа &

var newValue = dd.Replace('.', '&')
                 .Replace(',', '.')
                 .Replace('&', ',');
0 голосов
/ 03 марта 2020

Самый простой способ сделать это - внедрить раздел «Глобализация» в файл web.config следующим образом:

<system.web>
     <globalization uiCulture="es-MX" culture="es-MX" />
     ...
</system.web>

, для этого случая он использует испанские языки sh Язык и MX в качестве культуры страны, вы можете изменить это к "es-ES" для испанского sh - Испания

Если вам нужно использовать другую культуру, вы можете использовать ее в Google, один ресурс: https://lonewolfonline.net/list-net-culture-country-codes/

0 голосов
/ 03 марта 2020

Это может быть хорошей идеей, если вы можете объяснить, где вы хотите его использовать. Если речь идет о представлении чисел в разных регионах (например, мы используем. Как десятичное в Великобритании, но Дания использует для той же цели), тогда вы используете CultureInfo для выполнения преобразований. Если мы возьмем ваш пример

string source = "1,234,567.89";
// convert it to a number format, let us say double
double f = double.Parse(source);
string output = f.ToString("n2", CultureInfo.GetCultureInfo("da-DK")); // For Denmark Locale
// n2 is for 2 decimal places

Значение в output теперь равно 1.234.567,89. Таким образом, вы можете сохранить различные представления чисел и использовать их в расчетах.

0 голосов
/ 03 марта 2020

Вы можете использовать функцию замены строки

class Program
        {
            static void Main(string[] args)
            {
                string myString = "1,234,567.89";
                string replaced = myString.Replace(".", "+").Replace(",",".").Replace("+",",");
                string replacedBack = myString; //viceversa ?? -> re-use memory :P
                Console.WriteLine(replaced);
                Console.Read();
            }  
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...