You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为金额添加英镑符号(£)和逗号?C#字符串格式化问题

问题解决方法

你的代码报错主要有两个原因:

  1. 格式字符串"{0:#,###.##"没写闭合的大括号,语法不完整;
  2. String.Format的数值格式符只能作用于数值类型,但你传入的是字符串"1000",不是数字,自然解析失败。

下面给你两种可行的解决思路:

思路一:把a格式化成b的样式(带英镑符号和千分位)

先把字符串a转成数值类型,再按照目标格式输出:

string getAmount = "1000";
// 先将字符串转为decimal(金额场景推荐用decimal避免精度问题)
if (decimal.TryParse(getAmount, out decimal amount))
{
    // 方法1:用英国区域文化直接生成货币格式
    string formattedWithCulture = amount.ToString("C", new System.Globalization.CultureInfo("en-GB"));
    // 此时formattedWithCulture是"£1,000.00",如果不需要小数位,可以调整格式
    string formattedNoDecimal = amount.ToString("£#,##0", new System.Globalization.CultureInfo("en-GB"));
    Assert.Equal("£1,000", formattedNoDecimal);

    // 方法2:自定义拼接格式,更灵活
    string customFormatted = $"£{amount:#,##0}";
    Assert.Equal("£1,000", customFormatted);
}

思路二:把b清洗成a的样式(纯数字字符串)

如果只需要比较数值本身,可以移除b中的非数字字符:

string b = "£1,000";
// 筛选出所有数字字符拼接成新字符串
string cleanedB = new string(b.Where(c => char.IsDigit(c)).ToArray());
Assert.Equal("1000", cleanedB);

内容的提问来源于stack exchange,提问作者RShome

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 14:15:41