在C#中添加数字字符串并保留格式化

时间:2017-08-07 15:02:09

标签: c# string

我有一个问题,我需要添加两个数字字符串“$ 1,234.56”和“$ 9,876.54”并获得一个字符串“$ 11,111.10”

我可以将字符串转换为数字,执行添加,但我不知道在ToString()结果时保留格式的好方法。我可以添加几行if语句:输入是否有美元符号,小数点,百分号,并相应地构造格式字符串,但这很笨重,如果我们需要支持多种数字格式,则会失败。

有谁知道如何添加数字字符串并保留格式?

编辑:回答问题。在给定时间添加的所有字符串的格式是相同的,即:我不需要担心添加$和£(实际上目前不支持£),但是,目前支持的几种可能的格式和将来可能会添加更多内容:

$ 1,234.00; $的1,234; 1234; 1,234; 1,234.00; 1234%; 1234%; 1,234.00%

1 个答案:

答案 0 :(得分:0)

我建议使用第一个数字字符串作为模板,并从中创建一个数字格式:

var posshalves = firstNumericString.Split('.');
var fmthalves = new string[2] { posshalves[0], (posshalves.Length < 2 ? "" : "."+posshalves[1])};
var intfmt = Regex.Replace(fmthalves[0], @"[0-9]", "#");
intfmt = Regex.Replace(intfmt, @"#+", "#");
var decfmt = Regex.Replace(fmthalves[1], "[0-9]", "0");
var format = $"{intfmt}{decfmt}";