Как отформатировать число как деньги с помощью регулярных выражений - PullRequest
0 голосов
/ 07 сентября 2018

Я пытаюсь отформатировать число в формат суммы, используя регулярное выражение, как показано ниже.

  var input = "1234567.00"
  var pattern = @"\d(?=(\d{3},?)+\.)";
  var replacement = "$$$&,";

  var output = Regex.Replace(input, pattern, replacement);

Что дает мне $ 1,23 $ 4567,00 (дополнительно $).

Хочу как ниже

Input:1234567.00 or 1234,567.00 or 1234567 should return $1,234,567.00

Пожалуйста, предложите правильный вариант.

Ответы [ 3 ]

0 голосов
/ 07 сентября 2018

Может быть, что-то вроде этого:

//.replace(/(\d)(?=(\d{3})+\b)/g, "$1,").replace(/(.*\d)/g, '$$$1');
var input = "1234567.00";

var commaPattern = @"(\d)(?=(\d{3})+\b)";
var commaReplacement = "$1,";
var output = Regex.Replace(input, commaPattern, commaReplacement);

var dollarPattern = @"(.*\d)";
var dollarReplacement = "$$$1";
output = Regex.Replace(output, dollarPattern, dollarReplacement);

Дает 1 234 567,00 долл. США

0 голосов
/ 07 сентября 2018

Доступ запрещен имеет правильный ответ на вашу реальную (не-регулярную) проблему. Это не то, что вы можете легко или даже должны делать с регулярным выражением. Есть ограничения. Это все равно что спросить »Как я могу установить соединение с базой данных с Console.WriteLine?« Это что-то бессмысленное.

Вы можете сделать это за одну замену, если вам абсолютно необходимо:

Regex.Replace(input, @"^|(\d{3}(?=(\d{3})*(\.|$)))", m => m.Value == "" ? "$" : "," + m.Value);

Это добавит $ в начале и вставит запятые соответственно. Он также будет игнорировать региональные настройки, символ валюты и другие вещи, которые дает другой ответ.

0 голосов
/ 07 сентября 2018

Ознакомьтесь с документацией MSDN образец :

var input = "1234567.00";
NumberFormatInfo nfi = new CultureInfo( "en-US", false ).NumberFormat;
var currencyValue = decimal.Parse(input);
var output = currencyValue.ToString( "C", nfi );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...