在c#中将字符串值格式化为$ xx.xx格式

时间:2016-03-24 06:57:59

标签: c# arrays xml c#-4.0

我的下面数组有以下值{$ 100.0,$ 1000.0,$ - 1000.0} 我需要在$ xxx.xx中显示值,在括号中显示负数,因此将$ 1000.0显示为$ 1000.00,将$ -1000.0显示为$(1000.00)

2 个答案:

答案 0 :(得分:2)

修改

由于您要在0中添加其他string,我建议您先将其转换为double值,然后检查该值是正还是负,然后根据评估,您决定乘以/不乘以-1ToString("F2")格式重新打印。

string exampleStr = "$-1000.0";
double val = Convert.ToDouble(exampleStr.Substring(1));
string newStr = "$" + (val < 0 ? "(" + (val * -1).ToString("F2") + ")" : val.ToString("F2"));

<强>原始

对于具有正值的string,您无需执行任何操作。但对于具有负值的string,您只需检查该模式,如果它StartsWith $-。如果是,则通过将$-替换为$(并添加其他结束括号)来处理它。像这样:

string exampleStr = "$-1000.0"; //this has to be replaced with your LabelValue.Value
if (exampleStr.StartsWith("$-"))
    exampleStr = string.Concat(exampleStr.Replace("$-", "$("), ")");
//resulting exampleStr = "$(1000.0)"

答案 1 :(得分:2)

Parse(对Decimal这是一个更好的选择,当你使用钱时),然后格式来重复代表:

  String[] source = new String[] { "$100.0", "$1000.0", "$-1000.0" };

  var result = source
    .Select(item => Decimal.Parse(item.Trim('$'), CultureInfo.InvariantCulture))
    .Select(money => money < 0 
             ? String.Format("$({0:F2})", -money) 
             : String.Format("${0:F2}", money));
   //.ToArray(); // in case you want "result" being an array

  // "$100.00, $1000.00, $(1000.00)"
  Console.Write(String.Join(", ", result));