如何为金额添加英镑符号(£)和逗号?C#字符串格式化问题
问题解决方法
你的代码报错主要有两个原因:
- 格式字符串
"{0:#,###.##"没写闭合的大括号,语法不完整; 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
相关产品推荐
相关产品推荐

